在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 - 当使用StringInfoInsertLineInfo方法时,自动传递调用成员的名称。

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

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

相关推荐
淡海水1 分钟前
38-Hybrid生态-LeanCLR总览
unity·架构·c#·热更新·clr·hybrid·leanclr
iCxhust1 小时前
C# 生成命令行程序 将hex格式烧录程序转换成bin烧录格式
开发语言·汇编·单片机·嵌入式硬件·c#·微机原理
xiaoshuaishuai81 小时前
C# 封装与继承
开发语言·c#
FL16238631291 小时前
基于C#winform使用纯opencv部署ppocrv5和ppocrv6的onnx模型进行OCR文件检测识别
opencv·c#·ocr
小满Autumn7 小时前
log4net 日志框架 — 从配置到实战速查手册
笔记·c#·.net·wpf·上位机·log4net
JaydenAI11 小时前
[对比学习LangChain和MAF-07]如何引入人机交互的审批流程
python·ai·langchain·c#·agent·hitl·maf
北域码匠13 小时前
SHA-1算法:安全哈希原理与应用解析
算法·c#·哈希算法
123的故事14 小时前
工具分享(7)-多Excel文件内容查询工具
c#·excel·实用工具
iCxhust16 小时前
C#进程管理程序
开发语言·汇编·stm32·单片机·c#·微机原理
ceclar12318 小时前
C# 的任务并行库(TPL)
开发语言·c#·.net