C# 特性
C# 介绍
C#是由微软公司发布的一种由C和C++衍生出来的面向对象的编程语言、运行于.NET Framework和.NET Core(完全开源,跨平台)之上的高级程序设计语言。[1]
特性介绍(Attribute)
特性(Attribute)是用于在运行时传递程序中各种元素(比如类、方法、结构、枚举、组件等)的行为信息的声明性标签。您可以通过使用特性向程序添加声明性信息。一个声明性标签是通过放置在它所应用的元素前面的方括号([ ])来描述的。
特性(Attribute)用于添加元数据,如编译器指令和注释、描述、方法、类等其他信息。.Net 框架提供了两种类型的特性:预定义特性和自定义特性。链接
参考链接
1. 特性类自定义格式
自定义特性类需要继承自Attribute类,特性使用通常都会省略名字后面的Attribute,会自动识别
public sealed class MyAttribute : Attribute
{
}
[My]
internal class Program
{
}
2. 特性的位置参数和命名参数
当添加一个特性时,必须包含对应特性构造器中的位置参数,命名参数可有可无。
3. 特性的目标
在不显式指定的情况下,特性的目标就是它后面紧跟的代码元素,并且一般是类型或者类型成员。
如果要将特性附加到程序集上,那么需要显式指定特性的目标。
例如使用CLSCompliant 特性来标记整个程序集的CLS兼容性:
[assembly:CLSCompliant(true)]
4. 指定多个特性
一个类或者属性什么的可附加特性的元素,可以被指定多个特性。
[Serializable, Obsolete, CLSCompliant(false)]
public class MyClass
{
}
5. 调用者信息特性
public static void Main()
{
var time = Add(1, 2);
Console.WriteLine(time);
}
static int Add(int a, int b,
[CallerMemberName] string memberName = null,
[CallerFilePath] string filePath = null,
[CallerLineNumber] int lineNumber=0)
{
Console.WriteLine(memberName+","+filePath+","+lineNumber);
return a + b;
}
//输出
Main,x:\xxxx\Program.cs,16
3
总结
拓展知识: