C#:特性
阿新 • • 發佈:2018-12-04
#define IsText//新增一個巨集,接觸註釋 using System; using System.Collections.Generic; using System.Diagnostics; using System.Linq; using System.Runtime.CompilerServices; using System.Text; using System.Threading.Tasks; namespace _002特性 { [MyText("張三",Id =20)] class Program { static void Main(string[] args) { Type type = typeof(Program); object[] obj = type.GetCustomAttributes(false); foreach (var item in obj) { Console.WriteLine(item); Console.WriteLine(((MyTextAttribute)item).Name); Console.WriteLine(((MyTextAttribute)item).Id); }// Text1(); //Text2();特性Obsolete為true程式就不能使用了 //Text3(); //Text4("張三"); } [Obsolete("這個程式還可以用一段時間")] public static void Text1() { Console.WriteLine("Text1"); } [Obsolete("該程式作廢,禁止使用",true)] public static voidText2() { Console.WriteLine("Text2"); } [Conditional("IsText")]//該方法被註釋掉了(字串作為標記進行註釋) public static void Text3() { Console.WriteLine("Text3"); } public static void Text4(string name,[CallerFilePath]string filepath="",[CallerLineNumber]int num=10,[CallerMemberName]string filename="") { Console.WriteLine("Text4"); Console.WriteLine(name+filepath+num+filename); } } }
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace _002特性 { /*1.特性類尾綴加上Attribute 2.必須引用特性[AttributeUsage]並繼承於System.Attribute 3.特性內一般只有屬性,沒有方法 4.建構函式內可以新增引數 */ [AttributeUsage(AttributeTargets.Class)] class MyTextAttribute:System.Attribute { private string name; private int id; public string Name { get => name; set => name = value; } public int Id { get => id; set => id = value; } public MyTextAttribute(string name) { this.Name = name; } } }