1. 程式人生 > >C#:特性

C#:特性

#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 void
Text2() { 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;
        }
    }
}