// 特性(attribute):
// 一种允许我们向程序集添加元数据的语言结构
// 用于保存程序结构信息的某种特殊类型的类
// 类似“批注”,用于解释说明
#define IsShowMessage // 宏定义,在开头定义,用于调用Conditional
using 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)] // 默认为false
static 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
*/
}
}
}