总目录
C# 语法总目录
C# 特性
- 特性
-
- [1. 特性类自定义格式](#1. 特性类自定义格式)
- [2. 特性的位置参数和命名参数](#2. 特性的位置参数和命名参数)
- [3. 特性的目标](#3. 特性的目标)
- [4. 指定多个特性](#4. 指定多个特性)
- [5. 调用者信息特性](#5. 调用者信息特性)
特性
1. 特性类自定义格式
自定义特性类需要继承自Attribute类,特性使用通常都会省略名字后面的Attribute,会自动识别
c#
public sealed class MyAttribute : Attribute
{
}
[My]
internal class Program
{
}
2. 特性的位置参数和命名参数
当添加一个特性时,必须包含对应特性构造器中的位置参数,命名参数可有可无。
3. 特性的目标
在不显式指定的情况下,特性的目标就是它后面紧跟的代码元素,并且一般是类型或者类型成员。
如果要将特性附加到程序集上,那么需要显式指定特性的目标。
例如使用CLSCompliant 特性来标记整个程序集的CLS兼容性:
c#
[assembly:CLSCompliant(true)]
4. 指定多个特性
一个类或者属性什么的可附加特性的元素,可以被指定多个特性。
c#
[Serializable, Obsolete, CLSCompliant(false)]
public class MyClass
{}
5. 调用者信息特性
c#
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
总目录
C# 语法总目录