北京征集网站建设,网页设计实验报告3000,php网站项目,淘宝店铺怎么免费推广在C#中#xff0c;特性#xff08;Attributes#xff09;是一种将元数据应用于程序实体#xff08;如类、方法、属性等#xff09;的方式。这些元数据可以在编译时和运行时被读取#xff0c;常用于配置、自定义行为、装饰器模式等场景。以下是一些C#中常用的特性#xf…
在C#中特性Attributes是一种将元数据应用于程序实体如类、方法、属性等的方式。这些元数据可以在编译时和运行时被读取常用于配置、自定义行为、装饰器模式等场景。以下是一些C#中常用的特性 [Serializable] - 表示该类可以被序列化用于二进制序列化。 [Serializable]
public class MyClass { } [Obsolete] - 标记一个类、方法或属性为过时如果代码中使用了这些元素编译器会发出警告。 [Obsolete(Use NewClass instead.)]
public class OldClass { } [AttributeUsage] - 用于定义自定义特性的属性。 [AttributeUsage(AttributeTargets.Class, Inherited false)]
public class MyCustomAttribute : Attribute { } [Conditional] - 用于条件编译只有当定义了特定的符号时方法才会被调用。 [Conditional(DEBUG)]
public void DebugMethod() { } [Flags] - 表示枚举类型可以用于位字段即枚举值可以进行位运算。 [Flags]
public enum MyFlags { None 0, Option1 1, Option2 2 } [DefaultValue] - 用于指定参数的默认值。 public void MyMethod([DefaultValue(true)] bool flag) { } [ParamArray] - 允许方法接受不定数量的参数。 public void MyMethod([ParamArray] string[] args) { } [DebuggerStepThrough] - 告诉调试器在调试时跳过该方法的代码。 [DebuggerStepThrough]
public void MyMethod() { } [DebuggerDisplay] - 控制调试器显示对象的方式。 [DebuggerDisplay(MyObject {MyProperty})]
public class MyObject { public int MyProperty { get; set; } } [DebuggerBrowsable] - 控制调试器如何浏览对象的成员。 [DebuggerBrowsable(DebuggerBrowsableState.Never)]
public int MyProperty { get; set; } [CLSCompliant] - 表示程序元素是否符合公共语言规范CLS。 [CLSCompliant(true)]
public class MyCompliantClass { } [CallerMemberName] - 当使用StringInfo的InsertLineInfo方法时自动传递调用成员的名称。 public void Trace([CallerMemberName] string memberName )
{Console.WriteLine($Called {memberName});
}
特性的使用可以极大地提升代码的灵活性和表达能力