陣列
陣列型別轉換的工作過程:
//建立乙個2維filestream陣列
filestream[,] fs2dim = new filestream[5, 10];
//隱式轉換為乙個2維的object陣列
object[,] o2dim = fs2dim;
//不能從2維陣列轉換為1維陣列,編譯器報錯error cs00300:不能講'object[*,*]'型別轉換為'system.io.stream'
stream sldim = (stream) o2dim;
//顯示轉換為2維stream陣列
stream[,] s2dim = (stream[,]) o2dim;
//顯示轉換為2維string 陣列,能編譯通過,但在執行時會丟擲invalidvastexception異常
string[,] st2dim = (string[,]) o2dim;
//建立乙個1維int32陣列(值型別)
int32 ildim = new int32[5];
//不能把值型別的陣列轉換為其他任何型別,編譯器報錯error cs0030: 不能將'int型別轉換為 object'
object oldim = (object) ildim;
//建立乙個新的陣列,然後使用array.copy將陣列中的每乙個元素強制裝換為目標陣列中的元素型別
//下面的**建立了乙個陣列,其中包含的是對已裝箱的int32的應用
object obldim = new object[ildim.length];
array.copy(ildim, obldim, ildim.length);
copy方法能執行一下轉換:
1、把值型別的元素裝箱為引用型別的元素,比如將乙個int32賦值為乙個object
2、將引用型別的元素拆箱為值型別的元素,比如將乙個object賦值為乙個int32
3、加寬clr基元型別,比如將元素從乙個int32賦值到double中
4、在兩個陣列型別之間進行複製時,如果兩個陣列的型別是比匹配的,將進行向下型別轉換
注意:1、如果只是需要把陣列中的某些值複製的另外乙個型別相同的陣列,那使用system.bufferde blockcopy方法,
他的執行速度快,只支援基元型別
2、如果需要可靠地把乙個陣列中的元素賦值到另乙個陣列中,那使用system.array.constrainedcopy方法,但必須
保證源、目標陣列的型別一致
非安全陣列
using system;
public static class program
private static void stackallocdemo()
console.writeline(new string(pc, 0, width));}}
private static void inlinearrarydemo()
console.writeline(new string(ca.characters, 0, width));}}
internal unsafe struct chararray
}
C學習筆記 陣列
陣列是一組具有相同資料型別的變數集合,這裡要注意兩點,陣列只能儲存相同的資料型別和陣列的記憶體是連續的,這位陣列和指標的聯絡奠定了基礎。定義及初始化 一維陣列指的是只有乙個下標的陣列,它用來表示一組具有相同型別的資料 其格式為 型別說明符 陣列名 常量表示式 e.g.int arr 3 上式表達的是...
C語言筆記 陣列
筆記內容為自學郝斌老師c語言課程時所作 如果對於基礎知識點有遺忘可以借鑑下 遼寧工業大學 電子202 宋家盛 如有錯誤,可通過jff 16 163.com聯絡 陣列 陣列型別 陣列名 元素個數 例如 int a 2 元素表示 a 0 1 a 2 2 即a i 表示第i 1個元素 為什麼使用陣列?1....
c語言課程筆記 陣列
c語言課程筆記 陣列 知識總結 一 一維陣列的定義和初始化 1.構成陣列的每個資料項稱為陣列元素 c語言通過陣列的下標實現對陣列元素的訪問。2.注意 c語言中陣列的下標都是從0開始的。3.注意,引用陣列元素時下標可以是整型變數,例如引用score的第i個元素用score i 但在定義陣列時不能使用變...