在閱讀 .NET Core 原始碼的時候,運算式主體定義的成員隨處可見,通過運算式主體定義,可采用非常簡潔的可讀形式提供成員的實作, 只要任何支持的成員(如方法或屬性)的邏輯只包含單個運算式,就可以使用運算式主體定義,
運算式主體定義具有下列常規語法:
member => expression;
其中“expression”是有效的運算式,
C# 6 中引入了針對方法和只讀屬性的運算式主體定義支持,并在 C# 7.0 中進行了擴展, 運算式主體定義可用于下表列出的型別成員:

示例如下:
1、方法
expression-bodied 方法包含單個運算式,它回傳的值的型別與方法的回傳型別匹配;或者,對于回傳 void 的方法,其運算式則執行某些操作,
using System; public class Person { public Person(string firstName, string lastName) { fname = firstName; lname = lastName; } private string fname; private string lname; public override string ToString() => $"{fname} {lname}".Trim(); public void DisplayName() => Console.WriteLine(ToString()); } class Example { static void Main() { Person p = new Person("Mandy", "Dejesus"); Console.WriteLine(p); p.DisplayName(); } }
2、只讀屬性
語法:
PropertyType PropertyName => expression;
示例:
public class Location { private string locationName; public Location(string name) { locationName = name; } public string Name => locationName; }
3、屬性
從 C# 7.0 開始,可以使用運算式主體定義來實作屬性 get 和 set 訪問器, 下面的示例演示其實作方法:
public class Location { private string locationName; public Location(string name) => Name = name; public string Name { get => locationName; set => locationName = value; } }
4、建構式
public class Location { private string locationName; public Location(string name) => Name = name; public string Name { get => locationName; set => locationName = value; } }
5、索引器
索引器的 get 和 set 訪問器都以運算式主體定義的形式實作,如下所示:
using System; using System.Collections.Generic; public class Sports { private string[] types = { "Baseball", "Basketball", "Football", "Hockey", "Soccer", "Tennis", "Volleyball" }; public string this[int i] { get => types[i]; set => types[i] = value; } }
6、終結器
using System; public class Destroyer { public override string ToString() => GetType().Name; ~Destroyer() => Console.WriteLine($"The {ToString()} finalizer is executing."); }
本文內容摘自微軟官方檔案:
https://docs.microsoft.com/zh-cn/dotnet/csharp/programming-guide/statements-expressions-operators/expression-bodied-members
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/427392.html
標籤:.NET技术
上一篇:Net5 WorkService 繼承 Quarzt 以及 Net5處理檔案上傳
下一篇:.NET 7 預覽版 1 發布
