W3Cschool
恭喜您成為首批注冊(cè)用戶
獲得88經(jīng)驗(yàn)值獎(jiǎng)勵(lì)
屬性可以向代碼元素添加自定義信息。
例如,我們可以使用屬性標(biāo)記一個(gè)類已被棄用。
我們還可以標(biāo)記一個(gè)接口是一個(gè)web服務(wù)的web接口。
屬性由繼承自抽象類System.Attribute的類定義。
要將屬性附加到代碼元素,請(qǐng)?jiān)诖a元素前面的方括號(hào)中指定屬性的類型名稱。
例如,以下代碼將 ObsoleteAttribute
附加到Main類:
[ObsoleteAttribute]
public class Main {
...
}
此屬性由編譯器識(shí)別,并且如果引用了標(biāo)記為過(guò)時(shí)的類型或成員,將導(dǎo)致編譯器警告。
按照慣例,所有屬性類型都以 Attribute
結(jié)束。
C#允許您在附加屬性時(shí)省略后綴:
[Obsolete]
public class Main {
...
}
ObsoleteAttribute
是在 System
命名空間中聲明的類型,如下所示:
public sealed class ObsoleteAttribute : Attribute {...}
C#語(yǔ)言和.NET Framework包括多個(gè)預(yù)定義屬性。
屬性可以具有參數(shù)。
在下面的示例中,我們將 XmlElementAttribute
應(yīng)用于類。
此屬性告訴XMLserializer對(duì)象在XML中的表示方式并接受幾個(gè)屬性參數(shù)。
以下屬性將CustomerEntity類映射到XML元素名為Customer,屬于http://hgci.cn命名空間:
[XmlElement ("Customer", Namespace="http://hgci.cn")]
public class Customer {
...
}
屬性參數(shù)屬于兩種類型之一:位置或命名。
在里面前面的例子中,第一個(gè)參數(shù)是位置參數(shù); 第二個(gè)是命名參數(shù)。
位置參數(shù)對(duì)應(yīng)于屬性的參數(shù)類型的公共構(gòu)造函數(shù)。
命名參數(shù)對(duì)應(yīng)于公共字段或公共屬性的屬性類型。
當(dāng)指定屬性時(shí),我們必須包括對(duì)應(yīng)的位置參數(shù)到一個(gè)屬性的構(gòu)造函數(shù)。
命名參數(shù)是可選的。
下面是使用 CLSCompliant
屬性指定CLS合規(guī)性的示例對(duì)于整個(gè)裝配:
[assembly:CLSCompliant(true)]
可以為單個(gè)代碼元素指定多個(gè)屬性。
每個(gè)屬性都可以列在同一對(duì)方括號(hào)內(nèi),用逗號(hào)分隔單獨(dú)的方括號(hào)對(duì)。
以下三個(gè)示例在語(yǔ)義上是相同的:
[Serializable, Obsolete, CLSCompliant(false)]
public class Main {...}
[Serializable] [Obsolete] [CLSCompliant(false)]
public class Main {...}
[Serializable, Obsolete]
[CLSCompliant(false)]
public class Main {...}
我們可以用三個(gè)調(diào)用者信息之一來(lái)標(biāo)記可選參數(shù)屬性。 它們告訴編譯器饋送從調(diào)用者獲得的信息源代碼插入?yún)?shù)“s默認(rèn)值:
以下程序中的OneMethod方法演示了所有三個(gè):
using System;/*from w ww . j a va 2s .c om*/
using System.Runtime.CompilerServices;
class Main {
static void Main(){
OneMethod();
}
static void OneMethod (
[CallerMemberName] string memberName = null,
[CallerFilePath] string filePath = null,
[CallerLineNumber] int lineNumber = 0){
Console.WriteLine (memberName);
Console.WriteLine (filePath);
Console.WriteLine (lineNumber);
}
}
假設(shè)我們的程序駐留在c:\\ source \\ test \\ Program.cs中,輸出將是:
Main
c:\source\test\Program.cs
11
Copyright©2021 w3cschool編程獅|閩ICP備15016281號(hào)-3|閩公網(wǎng)安備35020302033924號(hào)
違法和不良信息舉報(bào)電話:173-0602-2364|舉報(bào)郵箱:jubao@eeedong.com
掃描二維碼
下載編程獅App
編程獅公眾號(hào)
聯(lián)系方式:
更多建議: