C# 特性

总目录
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# 语法总目录

相关推荐
烤麻辣烫13 小时前
黑马程序员苍穹外卖(新手)DAY6
java·开发语言·学习·spring·intellij-idea
友友马14 小时前
『QT』窗口 (一)
开发语言·数据库·qt
APIshop14 小时前
Python 零基础写爬虫:一步步抓取商品详情(超细详解)
开发语言·爬虫·python
AI科技星14 小时前
为什么宇宙无限大?
开发语言·数据结构·经验分享·线性代数·算法
Appreciate(欣赏)15 小时前
JAVA使用poi类读取xlxs文件内容拼接成添加数据SQL
java·开发语言·sql
oioihoii15 小时前
性能提升11.4%!C++ Vector的reserve()方法让我大吃一惊
开发语言·c++
毕设源码-朱学姐15 小时前
【开题答辩全过程】以 基于JAVA的恒星酒店客房管理系统为例,包含答辩的问题和答案
java·开发语言
思密吗喽15 小时前
景区行李寄存管理系统
java·开发语言·spring boot·毕业设计·课程设计
Rust语言中文社区15 小时前
【Rust日报】Dioxus 用起来有趣吗?
开发语言·后端·rust
小灰灰搞电子15 小时前
Rust Slint实现颜色选择器源码分享
开发语言·后端·rust