C#里的方括号的作用

方括号叫outline,可翻译为描述,byme

我们经常会看到一些C#代码的方法名前有一个方括号,里面有一行文字,如:

1、序列化:

[Serializable]

public void 方法名(){...}

2、WebServices方法:

[WebMethod]

public void 方法名(){...}

3、Ajax(AjaxPro)方法:

[AjaxPro.AjaxMethod]

public void 方法名(){...}

4、其他还有很多,如Duwamish7里的:

[Browsable(false)]

public void 方法名(){...}

请问这些方括号干嘛用的呀?编译器怎样处理它们的呀?如何应用?

MSDN解答:

Attribute 类将预定义的系统信息或用户定义的自定义信息与目标元素相关联。目标元素可以是程序集、类、构造函数、委托、枚举、事件、字段、接口、方法、可移植可执行文件模块、参数、属性 (Property)、返回值、结构或其他属性 (Attribute)。

属性所提供的信息也称为元数据。元数据可由应用程序在运行时进行检查以控制程序处理数据的方式,也可以由外部工具在运行前检查以控制应用程序处理或维护自身的方式。例如,.NET Framework 预定义属性类型并使用属性类型控制运行时行为,某些编程语言使用属性类型表示 .NET Framework 公共类型系统不直接支持的语言功能。

所有属性类型都直接或间接地从 Attribute 类派生。属性可应用于任何目标元素;多个属性可应用于同一目标元素;并且属性可由从目标元素派生的元素继承。使用 AttributeTargets 类可以指定属性所应用到的目标元素。

通俗回答一:特性,用于程序集、类、方法、属性、事件、字段、参数、返回值等的自描述

编译器将特性像狗皮膏药一样贴在目标上,以便于其他程序通过反射查找这些信息

(有的特性是Clr直接处理的,比如Serializable、MethodImpl等)

通俗回答二:就是用来描述该方法所具有的属性,这些类都是通过Atrrbuite类的派生类,

有些Class也会被这样的描述,这样在反射的时候就可以区分别的类了。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 136,179评论 19 139
  • 1. Java基础部分 基础部分的顺序:基本语法,类相关的语法,内部类的语法,继承相关的语法,异常的语法,线程的语...
    子非鱼_t_阅读 33,589评论 18 399
  • JAVA面试题 1、作用域public,private,protected,以及不写时的区别答:区别如下:作用域 ...
    JA尐白阅读 4,890评论 1 0
  • 小编费力收集:给你想要的面试集合 1.C++或Java中的异常处理机制的简单原理和应用。 当JAVA程序违反了JA...
    八爷君阅读 10,235评论 1 114
  • 泪雨 泪花 从你的星眸慢慢浮现 似笑似愁 似喜似悲 为什么看不见摸不透你 因为你会变啊 ...
    冰希阅读 1,319评论 0 0

友情链接更多精彩内容