屬性&方法

屬性

訪問修飾符:用來確定屬性的可用範圍
public:不限制對該屬性的訪問
protected:只能從其所在類和所在的子類(派生類)進行訪問
internal:只有其所在類才能訪問
private:私有訪問修飾符,自能在其聲明類中使用

get訪問器與方法體相類似,它必須返回屬性類型的值;
而set訪問器類似於返回類型爲void的方法,它使用稱爲value的隱式參數,此參數的類型是屬性類型

namespace ConsoleApp1
{
   class MyClass
    {
        private string id = ""; //定義變量,用來記錄用戶編號
        private string name = ""; //定義變量,用來記錄用戶姓名
        public string ID //定義用戶編號屬性,該屬性爲可讀可寫屬性
        {
            get
            {
                return id;
            }
            set
            {
                id = value;
            }
        }
        public string Name //定義用戶姓名屬性,爲可讀可寫屬性
        {
            get
            {
                return name;
            }
            set
            {
                name = value;
            }
        }
    }

    class Program
    {
        static void Main()
        {
            MyClass myclass = new MyClass();
            myclass.ID = "A001";
            myclass.Name = "TM1";
            Console.WriteLine(myclass.ID + " " + myclass.Name);

        }
    }
}

方法

方法聲明可以包含一組特性和private、public、protected、internal 4個訪問修飾符的任何一個有效組合,還可以包含new、static、virtual、override、sealed、abstract以及extern等修飾符
該聲明最多包含下列修飾符中的一個:static、virtual和override
該聲明最多包含下列修飾符中的一個:new,override
如果該聲明包含abstract,則不能包含:static、virtual、sealed、extern
如果包含private,則不能包含virtual、override、abstract
如果包含sealed,還該包含override
對於abstract和extern方法,方法主體智能包含一個分號

方法的參數類型
傳給方法的值叫實參,在方法內部
接收實參的變量叫形參,形參在緊跟着方法名的括號中聲明,形參只在括號內有效

1、params參數
paramas參數用來指定在參數數目可變時蠶蛹的方法參數,params參數必須是一維數組

namespace ConsoleApp1
{
    class program
    {
        static void UseParams(params string[] list)
        {
            for (int i = 0; i < list.Length; i++)
            {
                Console.WriteLine(list[i]);
            }
        }
        static void Main()
        {
            string[] strName = new string[5] { "一", "二", "三", "四", "五" };
            UseParams(strName);
        }
    }
}

2、ref參數
ref參數使用發發參數按引用傳遞,其效果是:當控制權傳遞迴調用方法時,在方法中對參數所做的任何更改都將反應在該變量中,如果要使用ref參數,則方法聲明和調用方法都必須顯式使用ref關鍵字。

namespace ConsoleApp1
{
    class program
    {
        public static void Method(ref int i)
        {
            i = 44;
        }
        public static void Main()
        {
            int val = 0;
            Method(ref val);
            Console.WriteLine(val);
        }
    }
}

3、out參數
out關鍵字用來定義輸出參數,它會導致參數通過引用來傳遞,這與ref關鍵字類似,不同之處子啊與ref要求變量必須在傳遞之前進行初始化,而out關鍵字定義的參數,不用進行初始化即可使用。
如果要使用out參數,則方法聲明和調用方法都必須顯式使用out關鍵字。

namespace ConsoleApp1
{
    class program
    {
        public static void Method(out int i)
        {
            i = 44;
        }
        public static void Main()
        {
            int value;
            Method(out value);
            Console.WriteLine("輸出參數:" + value);
        }
    }
}

輸出參數:44

方法的分類

1、靜態方法
不對特定實例進行操作,調用時,需要直接使用類名進行調用

namespace ConsoleApp1
{
    class program
    {
        public static int Add(int x, int y)
        {
            return x + y;
        }
        static void Main()
        {
            Console.WriteLine("結果爲:" + program.Add(2, 3));
        }
    }
}

非靜態方法
非靜態方法是對類的某個給定的實例進行操作,調用時,需要使用類的實例(對象)進行調用

namespace ConsoleApp1
{
    class Program
    {
        public int Add(int x, int y)
        {
            return x + y;
        }
        static void Main()
        {
            Program program = new Program();
            Console.WriteLine("結果爲:" + program.Add(3,5));
        }
    }
}

何時用靜態方法,何時用實例方法:
1.一個方法和他所在類的實例對象無關,不依賴new出來的實例,那麼它就應該是靜態的
2.不需要面向對象的理念的時候用靜態;比如動物-> RUN ,因爲你可能會擴展出貓 run、狗 run,這時候就需要用非靜態的方法

方法的重載

方法重載時指方法名相同,但參數的數據類型、個數或順序不同的方法。只要類中有兩個以上的同名方法,但是使用的參數類型、個數或順序不同,調用時編譯器即可判斷在那種情況下調用哪種方法。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章