c#入门-系统特性

news2024/11/18 10:53:07

特性

特性可以给成员添加元数据。这有两个作用:

  1. 这是一个元数据,可以利用反射获取到
  2. 如果编译器认识这个特性,那么可以与特性进行交互。

第一点涉及到反射的内容,先略过。
而第二点要求的编译器认实这个特性,就仅限于系统自带的特性。

添加特性

添加特性的操作是在一个可以加特性的东西上,用中括号,调用这个特性的构造器。
但这个构造器不需要在前面加new。如果是无参构造器则可以省略小括号。

[Obsolete]
class Tesk
{

}

多个特性

如果要给一个东西添加多个特性,可以用逗号隔开,也可是使用多个中括号。
也可以把这两种做法混合使用。

using System.Diagnostics;

class Tesk
{
	[Conditional("DEBUG"), Conditional("TEST1")]
	[Obsolete]
	public void Show() { }
}

特性的成员的赋值

特性的大部分成员一般会通过构造器进行赋值。
但如果无法通过构造器赋值,那么会采用特殊语法进行赋值----因为特性的声明不在执行语句中,无法使用常规方法赋值。
在构造器的括号里,输入完整的成员名字,进行赋值。这个操作要写在构造器必需参数之后。

[Obsolete("", DiagnosticId = "")]
class Tesk
{ 
}

在这里插入图片描述
代码提示会告诉你,有哪些成员是可以进行赋值的。

系统特性

已过时

Obsolete特性为具有此特性的东西标记为过时
在这里插入图片描述
此特性有两个参数的构造方法,第一个参数填写额外消息,第二个参数指示警告等级是否要提高到错误
在这里插入图片描述

获取调用者信息

使用此特性时先引用System.Runtime.CompilerServices命名空间,否则没有自动补全
此空间下有4个特性,都需要配合可选参数使用。

CallerLineNumber特性,需要尾随一个int类型的可选参数,可以获得调用者的行号。
CallerFilePath特性,需要尾随一个string类型可选参数。可以获得调用者的程序文件位置。
CallerMemberName特性,需要尾随一个string类型可选参数,可以获得调用者的方法名称。
CallerArgumentExpression特性,需要尾随一个string类型可选参数,并在构造方法中写入一个此方法的参数名。
可以获得调用者的填入参数的字符串。
在这里插入图片描述

条件编译特性

这个特性需要引用System.Diagnostics命名空间,并配合预处理命令使用。
Conditional特性,需要一个string参数。如果预处理命令没有定义和参数同名的符号,则此方法不会执行。
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/125320.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

在Linux上安装和使用ZFS

真正的文件系统终极者 ZFS 文件系统的英文名称为 ZettabyteFileSystem,也叫动态文件系统,是第一个 128 位文件系统。最初是由 Sun 公司为 Solaris10 操作系统开发的文件系统。作为 OpenSolaris 开源计划的一部分,ZFS 于 2005 年 11 月发布&a…

《MySQL 8从零开始学(视频教学版)》简介

#好书推荐##好书奇遇季#《MySQL 8从零开始学(视频教学版)》,定价89元,京东当当天猫都有发售。本书面向MySQL 8数据库初学者,是MySQL数据库畅销入门书。 配套资源 本书配套400个实例和14个综合案例的源码、PPT课件、近2…

/etc/passwd详解

目录 一、统一性和标准化 二、功能和权限 三、内容详解 1、/etc/passwd为按行记录的文本文件,每行记录一个用户的信息 2、每行信息内容 四、参考文献 一、统一性和标准化 各版本的Linux操作系统的/etc/passwd功能和内容格式基本相同。 (1&#xf…

Spark环境搭建(Stand alone模式)

Sand alone 架构 Standalone模式是Spark自带的一种集群模式,不同于前面本地模式启动多个进程来模拟集群的环境,Standalone模式是真实地在多个机器之间搭建Spark集群的环境,完全可以利用该模式搭建多机器集群,用于实际的大数据处理…

红黑树的迭代器红黑树与AVL树的比较

🧸🧸🧸各位大佬大家好,我是猪皮兄弟🧸🧸🧸 文章目录一、红黑树泛型实现map,set对多出来的模板参数的解释二、map和set对红黑树迭代器的封装①迭代器operator②operator--三、红黑树…

Web3中文|全球首个中华武术收藏级卡牌系列发布,传武文化的未来在元宇宙?

谈及中华武术的传承与发展,大家首先能想到什么?小说、电影、动画、游戏……等等,都是曾经的载体。作为中华文化极其重要的一部分,武术是国人独有的标签,太多经典作品珠玉在前,如今武术的传承,需…

【JavaScript】跟着pink学习第二天部分案例

1.猜数字游戏 三次机会&#xff0c;猜1~50之间的一个整数 <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta http-equiv"X-UA-Compatible" content"IEedge"><meta name"vi…

12月第4周榜单丨B站UP主排行榜(飞瓜数据B站)发布!

飞瓜轻数发布2022年12月19日-12月25日飞瓜数据UP主排行榜&#xff08;B站平台&#xff09;&#xff0c;通过充电数、涨粉数、成长指数三个维度来体现UP主账号成长的情况&#xff0c;为用户提供B站号综合价值的数据参考&#xff0c;根据UP主成长情况用户能够快速找到运营能力强的…

【Python百日进阶-数据分析】Day140 - plotly表:plotly.graph_objects.Table()

文章目录一、语法二、参数三、返回值四、实例4.1 基本表4.2 样式表4.3 使用 Pandas 数据框4.4 Dash中的表4.5 更改行和列大小4.6 交替行颜色4.7 基于变量的行颜色4.8 基于变量的单元格颜色一、语法 构造一个新的 Table 对象 用于查看详细数据的表格视图。数据以行和列的网格排…

screen命令简要说明

screen命令简要说明 screen命令有什么用 screen命令虚拟了一个终端(session)&#xff0c;可在终端内运行命令&#xff0c;多次运行screen命令可以虚拟多个不同的终端&#xff1b; 每个session可以开启多个窗口&#xff0c;每个窗口有自己的shell&#xff0c;可以在不同的窗口…

ConcurrentSkipListMap-跳跃表 源码解析

ConcurrentSkipListMap-跳跃表 源码解析 问题 跳跃表长什么样子呢&#xff1f;跳跃表如何查找指定 key 数据呢&#xff1f;跳跃表如何添加指定 key-value 数据呢&#xff1f;跳跃表如何删除指定 key 数据呢&#xff1f; 理论知识 跳表是一个随机化的数据结构&#xff0c;实…

如何将两个笔记本电脑进行相互投屏

文章目录&#xff09;使用以下定义&#xff1a;实际中&#xff1a;A和B电脑分别安装无线显示器B电脑这么做&#xff1a;A电脑这么做&#xff1a;使用以下定义&#xff1a; 投影的电脑为&#xff1a;A电脑 待投影的电脑为&#xff1a;B电脑 实际中&#xff1a; A电脑为win10系…

《HelloGitHub》第 81 期

兴趣是最好的老师&#xff0c;HelloGitHub 让你对编程感兴趣&#xff01;简介HelloGitHub 分享 GitHub 上有趣、入门级的开源项目。https://github.com/521xueweihan/HelloGitHub这里有实战项目、入门教程、黑科技、开源书籍、大厂开源项目等&#xff0c;涵盖多种编程语言 Pyth…

研讨会回顾 | 自动化测试“领导者”SmartBear解析软件质量与测试现状调研

2022年12月6日&#xff0c;龙智与软件测试自动化“领导者”SmartBear联合举办了主题为“ 如何通过自动化测试实现降本、增效与提质”的在线研讨会。 会上&#xff0c;SmartBear亚太渠道经理何平康深入解读了《2022年SmartBear软件质量与测试报告》&#xff0c;并从全球质量测试…

java开源工作流的特点介绍

我们都知道&#xff0c;在业务量激增的情况下&#xff0c;采用工作效率高的低代码开发平台已然成为趋势。目前&#xff0c;有不少专业的服务商正在积极研发低代码开发平台&#xff0c;立志为客户朋友提升办公协作效率而提升研发进度。本文将为大家介绍java开源工作流的特点&…

鹏孚隆冲刺创业板上市:计划募资约7亿元,部分收入来自海外

12月27日&#xff0c;北京易诚互动网络技术股份有限公司&#xff08;下称“易诚互动”&#xff09;在深圳证券交易所更新招股书&#xff0c;准备在创业板上市。本次冲刺上市&#xff0c;易诚互动计划募资3.13亿元&#xff0c;将用于用于数字银行应用平台升级项目、大数据智能风…

Spring Cloud(十七):高并发设计

秒杀 秒杀业务初步分析秒杀系统的挑战秒杀系统设计通用秒杀架构 页面访问常见的秒杀系统架构商城的秒杀系统设计和实现秒杀的隔离业务隔离系统隔离数据隔离 实际部署 OpenResty商品获取库存获取 Lua 访问Redis从库 — Linux 进程间通信IPC&#xff08;管道、匿名管道、共享内…

ArcGIS中ArcMap分割栅格Split Raster工具没有结果的解决

本文介绍在ArcMap软件中&#xff0c;进行分割栅格&#xff08;Split Raster&#xff09;工具处理后&#xff0c;得不到结果文件的解决方法。 最近&#xff0c;需要基于一个面要素类&#xff0c;对一个栅格遥感影像加以分割。如下图所示&#xff0c;这个面要素类中有3个部分&…

维视智造斩获2022年度光能杯最具影响力“智造”企业奖

近日&#xff0c;由光伏行业权威媒体和机构——索比光伏网、索比咨询联合主办的2022年度“光能杯”影响力大奖榜单发布&#xff0c;维视智造凭借硬件与AI算法能力、凭借在光伏行业具有创新性的智能制造产品方案与落地的标杆案例&#xff0c;斩获“2022年最具影响力“智造”企业…

算法学习:第一天-------位运算

前言 位运算是在算法设计中的一种非常重要和高效的方法&#xff0c;常见的有与运算&#xff0c;非运算&#xff0c;异或运算。我们常用的比较多的可能就是异或运算&#xff0c;又叫无进位相加。 1.1 取非运算----&#xff08;~&#xff09; 取非运算其实就是和我们的无符号数…