屬性
訪問修飾符:用來確定屬性的可用範圍
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,這時候就需要用非靜態的方法
方法的重載
方法重載時指方法名相同,但參數的數據類型、個數或順序不同的方法。只要類中有兩個以上的同名方法,但是使用的參數類型、個數或順序不同,調用時編譯器即可判斷在那種情況下調用哪種方法。