C 學習2 陣列 運算子與型別轉換

2021-04-19 00:35:55 字數 1200 閱讀 4813

這兩天閱讀了第5章和第6章,昨天加班到很晚,沒時間書寫,今天補上。

對於陣列我有這些體會:

陣列可分為簡單陣列、多維陣列和鋸齒數字。

陣列可以使用資料型別加來宣告,然後使用new和陣列元素或陣列元素長度(length)來初始化。

陣列中的元素使用索引來訪問。

array類是乙個抽象類,不能直接例項化來建立陣列,但是可以使用array的static 方法來建立陣列,使用getvalue()讀取值,setvalue()設定值。

使用array類可以建立索引不基於0個陣列。

可以使用icloneabel介面定義的clone()方法來建立陣列的淺表副本。如果陣列元素是值型別,就會複製所有的值,如果陣列元素是引用型別,就只複製引用。

array.copy()方法也可以建立淺副本,與clone()的區別在於後者會建立乙個新的陣列,而前者只是傳送了階數相同、有足夠元素空間的已有陣列。

如果需要包含引用型別的陣列的深副本,就必須迭代陣列,建立新物件。

array實現對陣列的氣泡排序。sort()方法需要實現陣列中的元素實現icomparable介面,基本型別已實現該介面,而自己定義的型別必須實現該介面的唯一方法compareto()。sort()的2個引數的過載形式需要實現icomparer的方法compareto()。

ieumerable介面是又foreach語句用於迭代陣列的介面。icollection介面派生於ieumerable介面,ilist介面派生與icollection介面。

c#的foreach語句不會解析為il**中的foreach語句。c#編譯器會把foreach語句轉換為ieumerable介面的方法和屬性。

yield return 語句用於返回集合的乙個元素,並移動到下乙個元素上。yield break可停止迭代。

運算子:

is運算子可以檢查物件是否與特定的型別相容。

as運算子用於執行引用型別的顯式型別轉換。

sizeof運算子可以確定堆疊中值型別需要的長度(單位是位元組)。

typeof運算子返回乙個表示特定型別的system.type物件。

可空型別?

空接合運算子??

型別轉換分為隱式轉換(implicitly)和顯式轉換(explicitly)。

物件的相等比較。

運算子使用關鍵字operator來過載。

讀下來就覺得講解ieumerable時有些不懂,運算子過載有些難理解,仔細想想也就懂了。

c 型別轉換運算子

c 中有4個型別轉換運算子,使裝換過程更規範 dynamic cast type name expression 如果轉型失敗則返回0,即空指標。該運算子的用途是,使得能夠在類層次結構中進行向上轉換 由於 is a關係,這樣的型別轉換時安全的 而不允許其他轉換。二 const cast const ...

C 型別轉換運算子

隱式轉換,是針對不同型別之間的賦值和運算,函式呼叫傳遞引數 這些的轉換都是由編譯器自動完成 char ch int i ch 顯式轉換 由程式設計師在變數前面新增型轉換 char pc char pb void ps void pa 通過上述的兩種方式,c語言大部分的型別轉換都可以順利進行,c 繼承...

C 型別轉換運算子

用於 指向派生類物件的 基類指標轉換成派生類指標。如果轉換失敗,則返回0,即空指標。通過判斷轉換是否成功,來決定是否用派生類裡的函式 基類中可能沒有那個函式 class a class b public a class c public b a a new a a b new b a c new c...