程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> .NET網頁編程 >> C# >> C#入門知識 >> 18個不常見的C#關鍵字

18個不常見的C#關鍵字

編輯:C#入門知識

1、__arglist

    讓我們先從__arglist開始。 __arglist是用來給方法傳送參數。通常我們是通過函數頭部指定的參數列表給方法傳遞參數的。如果我們想要給方法傳遞一組新的參數,我們需要重載方法。如果我們想要傳遞的參數數量不確定,我們需要使用param數組。我們為什麼要使用__arglist,因為上面兩種方法,存在的下面問題:

a、如果我們使用方法重載,一旦要傳遞一組新的參數,我們都要增加一個新的函數重載。

b、如果我們用param數組,參數類型必須相同或者使用param對象數組。

__arglist能解決上面的問題。你可以傳遞任何參數給函數,可以是任何類型,我們可以使用簡單的步驟分析每個參數。

讓我們先看下下面代碼:

1 public int paramLength(__arglist)
2 {
3           ArgIterator iterator = new ArgIterator(__arglist);
4           return iterator.GetRemainingCount();
5 }

如果我使用下面代碼調用該函數

1 int x = this.paramLength(__arglist(49,34,54,6,"Manimoy")); // returns 5 

將被返回5給變量x。這是因為我們給這個方法傳遞了5個參數。我們可以訪問每個參數,如: 

1 TypedReference tf = iterator.GetNextArg();
2 TypedReference.ToObject(tf)

每次調用GetNextArg,GetRemainingCount將減1,直到遍歷完迭代器的每個對象。

2、__refvalue 

另一個有趣的關鍵字是__refvalue。它是用來獲取一個引用對象的的值。你可以用來從TypedReference對象中獲得實際對象。這需要兩個參數,第一個就是TypedReference對象和另一個是轉換的類型。看看下面代碼:

1 int tfValue = __refvalue(tf, int); 

3、__makeref

__makeref將使從對象中找出TypedReference對象。這跟_refvalue剛剛相反。請看下面的代碼:

1 string name = "Ayan";
2 TypedReference tf = __makeref(name);

4、 __reftype

__reftype是用來從TypedReference類型的對象獲得類型。看下面代碼所示:

1 Type t = __reftype(tf);
2 if(t.ToString().equals("System.String"))
3 string str = __refvalue(t,string); 

注:雖然我在所有的C#版本中發現上面這些關鍵字,但我沒在工作中使用它。在未來版本的C#可能不存在這些關鍵字,所以是否使用看你自己的風險。

5、Yield

    Yield出現在.NET 2.0中,使用Yield將以枚舉數對象值的形式返回,yield 語句只能出現在iterator 塊中,該塊可用作方法、運算符或訪問器的體。在以下代碼中,我構建了一個名字列表,將返回長度小於5的名字列表,遇到yield break語句返回。

 1 List<string> lst = new List<string>();
 2 lst.Add("Abhishek");

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved