日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) >

表达式主体定义

發(fā)布時(shí)間:2023/12/10 50 豆豆
生活随笔 收集整理的這篇文章主要介紹了 表达式主体定义 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

原文地址https://docs.microsoft.com/zh-cn/dotnet/csharp/programming-guide/statements-expressions-operators/expression-bodied-members

通過(guò)表達(dá)式主體定義,可采用非常簡(jiǎn)潔的可讀形式提供成員的實(shí)現(xiàn)。?只要任何支持的成員(如方法或?qū)傩?#xff09;的邏輯包含單個(gè)表達(dá)式,就可以使用表達(dá)式主體定義。?表達(dá)式主體定義具有下列常規(guī)語(yǔ)法:

C#

member => expression;

其中“expression”是有效的表達(dá)式。

C# 6 中引入了針對(duì)方法和屬性 Get 訪問(wèn)器的表達(dá)式主體定義支持,并在 C# 7.0 中進(jìn)行了擴(kuò)展。?表達(dá)式主體定義可用于下表列出的類(lèi)型成員:

成員開(kāi)始提供支持的版本
方法C# 6
構(gòu)造函數(shù)C# 7.0
終結(jié)器C# 7.0
屬性 GetC# 6
屬性 SetC# 7.0
索引器C# 7.0

方法

expression-bodied 方法包含單個(gè)表達(dá)式,它返回的值的類(lèi)型與方法的返回類(lèi)型匹配;或者,對(duì)于返回?void?的方法,其表達(dá)式則執(zhí)行某些操作。?例如,替代?ToString?方法的類(lèi)型通常包含單個(gè)表達(dá)式,該表達(dá)式返回當(dāng)前對(duì)象的字符串表示形式。

下面的示例定義?Person?類(lèi),該類(lèi)通過(guò)表達(dá)式主體定義替代?ToString。?它還定義向控制臺(tái)顯示名稱(chēng)的?DisplayName?方法。?請(qǐng)注意,ToString?表達(dá)式主體定義中未使用?return?關(guān)鍵字。

C#

  • 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();

  • }

  • }

  • ?
  • 有關(guān)詳細(xì)信息,請(qǐng)參閱方法(C# 編程指南)。

    構(gòu)造函數(shù)

    構(gòu)造函數(shù)的表達(dá)式主體定義通常包含單個(gè)賦值表達(dá)式或一個(gè)方法調(diào)用,該方法調(diào)用可處理構(gòu)造函數(shù)的參數(shù),也可初始化實(shí)例狀態(tài)。

    以下示例定義?Location?類(lèi),其構(gòu)造函數(shù)具有一個(gè)名為“name”的字符串參數(shù)。?表達(dá)式主體定義向?Name?屬性分配參數(shù)。

    C#

  • public class Location

  • {

  • private string locationName;

  • ?
  • public Location(string name) => Name = name;

  • ?
  • public string Name

  • {

  • get => locationName;

  • set => locationName = value;

  • }

  • }

  • 有關(guān)詳細(xì)信息,請(qǐng)參閱構(gòu)造函數(shù)(C# 編程指南)。

    終結(jié)器

    終結(jié)器的表達(dá)式主體定義通常包含清理語(yǔ)句,例如釋放非托管資源的語(yǔ)句。

    下面的示例定義了一個(gè)終結(jié)器,該終結(jié)器使用表達(dá)式主體定義來(lái)指示已調(diào)用該終結(jié)器。

    C#

  • using System;

  • ?
  • public class Destroyer

  • {

  • public override string ToString() => GetType().Name;

  • ?
  • ~Destroyer() => Console.WriteLine($"The {ToString()} destructor is executing.");

  • }

  • 有關(guān)詳細(xì)信息,請(qǐng)參閱終結(jié)器(C# 編程指南)。

    屬性 Get 語(yǔ)句

    如果選擇自行實(shí)現(xiàn)屬性 Get 訪問(wèn)器,可以對(duì)只返回屬性值的單個(gè)表達(dá)式使用表達(dá)式主體定義。?請(qǐng)注意,未使用?return?語(yǔ)句。

    下面的示例定義?Location.Name?屬性,其屬性 Get 訪問(wèn)器返回支持該屬性的私有?locationName?字段的值。

    C#

  • public class Location

  • {

  • private string locationName;

  • ?
  • public Location(string name) => Name = name;

  • ?
  • public string Name

  • {

  • get => locationName;

  • set => locationName = value;

  • }

  • }

  • 不使用顯式?set?語(yǔ)句也可實(shí)現(xiàn)使用表達(dá)式主體定義的只讀屬性。?語(yǔ)法為:

    C#復(fù)制

    PropertyName => returnValue;

    下面的示例定義?Location?類(lèi),其只讀?Name?屬性以表達(dá)式主體定義的形式實(shí)現(xiàn),該表達(dá)式主體定義返回私有?locationName?字段值。

    C#

  • public class Location

  • {

  • private string locationName;

  • ?
  • public Location(string name) => locationName = name;

  • ?
  • public string Name => locationName;

  • }

  • 有關(guān)詳細(xì)信息,請(qǐng)參閱屬性(C# 編程指南)。

    屬性 Set 語(yǔ)句

    如果選擇自行實(shí)現(xiàn)屬性 Set 訪問(wèn)器,可以對(duì)單行表達(dá)式使用表達(dá)式主體定義,該單行表達(dá)式用于對(duì)支持該屬性的字段賦值。

    下面的示例定義?Location.Name?屬性,其屬性 Set 語(yǔ)句將其輸入?yún)?shù)賦給支持該屬性的私有?locationName?字段。

    C#

  • public class Location

  • {

  • private string locationName;

  • ?
  • public Location(string name) => Name = name;

  • ?
  • public string Name

  • {

  • get => locationName;

  • set => locationName = value;

  • }

  • }

  • 有關(guān)詳細(xì)信息,請(qǐng)參閱屬性(C# 編程指南)。

    索引器

    與屬性一樣,如果索引器的 Get 訪問(wèn)器包含單個(gè)返回值的語(yǔ)句或其 Set 訪問(wèn)器執(zhí)行簡(jiǎn)單的賦值,則 Get 和 Set 訪問(wèn)器包含表達(dá)式主體定義。

    下面的示例定義名為?Sports?的類(lèi),其中包含一個(gè)內(nèi)部?String?數(shù)組,該數(shù)組包含大量體育運(yùn)動(dòng)的名稱(chēng)。索引器的 Get 和 Set 訪問(wèn)器都以表達(dá)式主體定義的形式實(shí)現(xiàn)。

    C#

  • 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;

  • }

  • ?
  • 總結(jié)

    以上是生活随笔為你收集整理的表达式主体定义的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

    如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。