漫談C 之關鍵字

2021-09-08 10:23:03 字數 1228 閱讀 1055

每一種語言都有非常多的關鍵字,而且這些關鍵字也都大同小異,不過畢竟還是有些許的不一樣。有些關鍵字大家碰到的多了,自然就熟悉了,但是有些關鍵字用得不大多,或者是新引入的,所以就不大熟悉了。我平常在用的時候,就是會碰到一些關鍵字,感覺有點生疏,平常也會把這些我不懂的關鍵字的用法了解一下並記錄下來。想到應該也有很多跟我同樣的人,所以就把我的記錄跟大家分享一下。請各位tx多多指正!訪問關鍵字base:用於派生類中訪問基類的成員

從靜態方法中使用base關鍵字是錯誤的。

轉換關鍵字explicit:用於宣告使用者定義的顯式型別轉換運算子

1 class mytype 2 7 }

顯式轉換運算子必須通過型別轉換呼叫

1 int i; 2 mytype x = (mytype)i; // int到mytype型別的轉換需要進行型別轉換

如果轉換操作可能導致異常或資訊丟失,則應用explicit關鍵字標記它。     implicit:用於宣告使用者定義的隱式轉換運算子 

1 class mytype 2 7 }

1 mytype x; 2 int i = x;  // 隱式地呼叫mytype的mytype到int型別的轉換運算子

隱式轉換可以通過消除不必要的型別轉換來提高源**的可讀性。     一般情況下,呼叫某乙個隱式轉換時,應當絕不會引發異常,並且不會造成資訊丟失。否則,應將其標記為explicit。方法引數關鍵字如果宣告方法的引數時沒有指明ref或out,該引數將具有與該方法相關的值。這個值在方法中能被更改,但是當程式返回到呼叫過程時,這種改動不會被保留。     params:用於指定在引數數目可變時帶有引數的方法引數     在方法宣告中的params關鍵字之後不允許引入任何其他引數,但在其前面可以有其他引數。而且在方法宣告中只允許使用乙個params關鍵字。

1 public static void useparams(params int list)  2  7 }  8  9 public static void main() 10 ; 13     useparams(myarray); 14 }

ref、out  使方法可以引用傳遞到該方法的那乙個變數,當程式轉至呼叫方法時,在方法中對引數所做的任何改動都將傳給該變數。     ref引數的值將被傳遞到ref引數,故必須首先初始化;而out引數不然,它的值不會被傳遞到該out引數,故不必首先初始化,但它必須在方法返回以前為out引數賦值。     屬性不是變數,不能作為ref/out引數。

C 關鍵字之yield

說起yield,不得不先說說迭代器。迭代器是c 2.0中的新功能,有了它,我們就可以在自己的類或者結構中支援foreach迭代而不必實現整個ienumerable介面,我們只需要提供乙個迭代器,即可遍歷類中的資料結構。當編譯器檢測到迭代器時,它將自動生成ienumerable介面的current m...

C 之auto關鍵字

在那些情況下要申明型別 定義變數型別 函式返回值,函式引數 表示式返回變數型別 為什麼auto 在開發實踐中,有時候我們並不能非常容易地確定乙個變數應該具有的資料型別。比如,將某個複雜表示式作為初始值賦值給乙個新定義的變數時,我們往往很難確定這個表示式的資料型別,從而無法確定變數應有的資料型別。為了...

C 之關鍵字extern

最近看了許多關於extern關鍵字的文章,有一些心得體會,本篇博文綜合了許多文章的內容,不正確的地方還希望大家能夠給予指正!其中先指明乙個誤區 許多人認為標頭檔案只能包含宣告,這其實是不對的!一 首先,讓我們來了解宣告和定義的基本概念。1.1.宣告的概念 大概來講宣告主要是為了支援模組 編譯單元 c...