在c#中常用的特性

在C#中,特性(Attributes)是一种将元数据应用于程序实体(如类、方法、属性等)的方式。这些元数据可以在编译时和运行时被读取,常用于配置、自定义行为、装饰器模式等场景。以下是一些C#中常用的特性:

  1. Serializable - 表示该类可以被序列化,用于二进制序列化。

    cs 复制代码
    [Serializable]
    public class MyClass { }
  2. Obsolete - 标记一个类、方法或属性为过时,如果代码中使用了这些元素,编译器会发出警告。

    cs 复制代码
    [Obsolete("Use NewClass instead.")]
    public class OldClass { }
  3. AttributeUsage - 用于定义自定义特性的属性。

    cs 复制代码
    [AttributeUsage(AttributeTargets.Class, Inherited = false)]
    public class MyCustomAttribute : Attribute { }
  4. Conditional - 用于条件编译,只有当定义了特定的符号时,方法才会被调用。

    cs 复制代码
    [Conditional("DEBUG")]
    public void DebugMethod() { }
  5. Flags - 表示枚举类型可以用于位字段,即枚举值可以进行位运算。

    cs 复制代码
    [Flags]
    public enum MyFlags { None = 0, Option1 = 1, Option2 = 2 }
  6. DefaultValue - 用于指定参数的默认值。

    cs 复制代码
    public void MyMethod([DefaultValue("true")] bool flag) { }
  7. ParamArray - 允许方法接受不定数量的参数。

    cs 复制代码
    public void MyMethod([ParamArray] string[] args) { }
  8. DebuggerStepThrough - 告诉调试器在调试时跳过该方法的代码。

    cs 复制代码
    [DebuggerStepThrough]
    public void MyMethod() { }
  9. DebuggerDisplay - 控制调试器显示对象的方式。

    cs 复制代码
    [DebuggerDisplay("MyObject {MyProperty}")]
    public class MyObject { public int MyProperty { get; set; } }
  10. DebuggerBrowsable - 控制调试器如何浏览对象的成员。

    cs 复制代码
    [DebuggerBrowsable(DebuggerBrowsableState.Never)]
    public int MyProperty { get; set; }
  11. CLSCompliant - 表示程序元素是否符合公共语言规范(CLS)。

    cs 复制代码
    [CLSCompliant(true)]
    public class MyCompliantClass { }
  12. CallerMemberName - 当使用StringInfo的InsertLineInfo方法时,自动传递调用成员的名称。

    cs 复制代码
    public void Trace([CallerMemberName] string memberName = "")
    {
        Console.WriteLine($"Called {memberName}");
    }

特性的使用可以极大地提升代码的灵活性和表达能力

相关推荐
samble6 小时前
从零搭建灌装监控系统(十二):配置系统,原子写入与容错
c#·wpf·mvvm·modbus·工业控制
流形填表9 小时前
题库去重实战:基于题干指纹的重复题清理
开发语言·c#
开开心心就好15 小时前
以图搜图找重复图片,本地工具离线就能用
javascript·智能手机·ffmpeg·c#·ocr·word·音视频
QQ_216962909615 小时前
基于C#(Asp.net)电竞陪玩信息管理系统的设计与实现
java·大数据·spring boot·微信小程序·c#·云计算·asp.net
未来之窗软件服务1 天前
C# 截图源码支持自动保存-东方仙盟
c#·仙盟创梦ide·东方仙盟·电脑工具
UIU1142 天前
-7 / 2 在 C 里是 -3,在 Python 里是 -4,谁算错了?
c++·学习·c#
wflynn2 天前
GitHub 今日推荐|REDox:64 位 token 表示结构化数据,内存占用降 70% 支持多格式互转
开源·c#·github
驰骋工作流2 天前
C#/.NET 开源BPM工作流引擎6大常用对比选型分析驰骋BPM驰骋低代码低代码工作流引擎
开源·c#·.net
en.en..2 天前
C语言 fp与fd 区别详解
c#
淡海水2 天前
02-02-原理篇-分代GC
算法·unity·c#·游戏引擎·.net·gc