// 特性(attribute):
// 一种允许我们向程序集添加元数据的语言结构
// 用于保存程序结构信息的某种特殊类型的类
// 类似“批注”,用于解释说明
#define IsShowMessage // 宏定义,在开头定义,用于调用Conditionalusing System;
using System.Collections.Generic;
using System.Diagnostics;
using System.Linq;
using System.Runtime.CompilerServices;
using System.Text;
using System.Threading.Tasks;namespace AttributeUser
{class Program{public static object UseInfoA { get; private set; }// 特性(attribute):// 一种允许我们向程序集添加元数据的语言结构// 用于保存程序结构信息的某种特殊类型的类// 类似“批注”,用于解释说明// Obsolete(弃用)特性// true 如果使用过时的元素将生成编译器错误; false 如果使用它将生成编译器警告,能编译。[Obsolete("这个方法已弃用,请使用最新的NewTest", false)] // 默认为falsestatic void OldTest(){Console.WriteLine("OldFuction");}static void NewTest(){Console.WriteLine("NewFuction");}// Conditional(条件)特性[Conditional("IsShowMessage")] // 用于控制ShowMessage函数,显示信息,方便观察程序段的执行static void ShowMessage(string str) {Console.WriteLine(str);}// DebuggerStepThrough特性[DebuggerStepThrough] // 跳过调试直接执行// (字符串信息,调用者行号,文件路径,类成员名称)static void ShowMessage2(string message,[CallerLineNumber]int LineNumber =0,[CallerFilePath]string filePath = "", [CallerMemberName]string memberName= ""){Console.WriteLine(message);Console.WriteLine(LineNumber); Console.WriteLine(filePath); Console.WriteLine(memberName); }static void Main(string[] args){// 如果没有宏定义IsShowmessage,则不会输出打印Start of Mian……ShowMessage("Start of Mian……"); // Start of Mian……OldTest(); // OldFuction//警告 CS0618 “Program.OldTest()”已过时:“这个方法已弃用,请使用最新的NewTest” NewTest(); // NewFuction// 如果没有宏定义IsShowmessage,则不会输出打印End of Mian……ShowMessage("End of Mian……"); // End of Mian……ShowMessage2("Huppy is cute.");/*// Huppy is cute.// 65// D:\C#编程\ConsoleApp1\Program.cs// Main*/}}
}