六月婷婷综合激情-六月婷婷综合-六月婷婷在线观看-六月婷婷在线-亚洲黄色在线网站-亚洲黄色在线观看网站

明輝手游網中心:是一個免費提供流行視頻軟件教程、在線學習分享的學習平臺!

第14章 數組[《.net框架程序設計》讀書筆記]

[摘要]第十四章 數組.內容摘要: 本章討論了數組的方方面面,對于這種常用類型進行深入研究。 一、 數組簡介 三種類型:一維數組、多維數組、交錯數組(jagged aray)l 一維數組: Int32[] myIntegers; ...
第十四章 數組.

內容摘要:

本章討論了數組的方方面面,對于這種常用類型進行深入研究。



一、 數組簡介

三種類型:一維數組、多維數組、交錯數組(jagged aray)

l 一維數組:

Int32[] myIntegers;

myIntegers = new Int32[100];

l 多維數組:

Int32[,] myIntegers;

myIntegers = new Int32[100,100];

l 交錯數組:交錯數組不受CLS支持

Point[][] myPolygons = new Point[3][];

myPolygons[0] = new Point[10];

myPolygons[1] = new Point[20];

myPolygons[2] = new Point[30];

二、 System.Array

請參考.net framework sdk中相關描述

三、 數組轉型

l 兩數組必須有同樣的維數

l 兩數組中元素類型間存在隱式或顯式轉換

l 除使用Array.Copy()方法外,不允許將值類型數組轉換為其他類型數組(Array.Copy方法會根據需要進行強制類型轉換或裝箱操作)

Array.Copy()方法能夠執行的類型轉換如下:

l 將值類型轉換為引用類型,將Int32轉換為Object

l 將引用類型轉換為值類型,將Object轉換為Int32

l 拓寬(widen)CLR基類型,如將Int32轉換為Double



下面這個示例提供了一個反面教材(切勿效仿,后果自負!)了值類型的裝換:

using System;

//自定義一個值類型,該類型可以與Int32進行互轉換

struct MyAge

{

private Int32 m_nAge;



public MyAge(Int32 nAge)

{

this.m_nAge = nAge;

}



//轉換操作符

public static implicit operator MyAge(Int32 nAge)

{

return new MyAge(nAge);

}



public static explicit operator Int32(MyAge age)

{

return age.ToInt32();

}



public Int32 ToInt32()

{

return m_nAge;

}



public override string ToString()

{

return "Age : " + m_nAge;

}

}



public class ArrayTest

{

public static void Main()

{

Int32[] arrInt = new Int32[10];

for(int i = 0; i < arrInt.Length; i ++)

{

arrInt[i] = i;

}



MyAge[] arrAge = new MyAge[arrInt.Length];

Array.Copy(arrInt, arrAge, arrInt.Length);



foreach(MyAge age in arrAge)

{

Console.WriteLine(age.ToString());

}

}

}



/*運行結果

未處理的異常: System.ArrayTypeMismatchException: 不能將源數組類型分配給目標數組

類型。

at System.Array.Copy(Array sourceArray, Int32 sourceIndex, Array destinationA

rray, Int32 destinationIndex, Int32 length)

at System.Array.Copy(Array sourceArray, Array destinationArray, Int32 length)



at ArrayTest.Main()



*/

注:1、上述代碼是不能運行的。雖然為值類型定義了轉換操作,但仍不滿足上述轉換條件,可見自定義的轉換操作不被Array.Copy()認可。

2、上述代碼中涉及到類型轉換操作符的應用,請參考讀書筆記第九章 方法

四、 數組傳遞與返回

注意事項:

l 為獲得對數組元素的深拷貝,要求每個元素都實現ICloneable接口。需要注意的是應在適當時候使用深拷貝操作(詳情請參見《c# primer》p185)

l 返回數組引用的方法若不含數組元素應該返回一個包含0個元素的數組而不是null

l 不在方法中返回類型內部的數組引用,而是重新構造一個深拷貝的數組返回。

五、 創建下限非0的數組

使用Array.CreateInstance()方法:

public static Array CreateInstance(Type elementType, int[] lengths, int[] lowerBounds);

elementType : 要創建的 Array 的 Type。

lengths : 一維數組,它包含要創建的 Array 的每個維度的大小

lowerBounds : 一維數組,它包含要創建的 Array 的每個維度的下限(起始索引)。



六、 快速數組訪問

要點:

l 使用非安全的代碼

l 使用指針訪問數組

l 可進行非安全數組操作的元素為數值基元類型、Boolean、枚舉類型或字段為上述類型的結構類型,或字段為上述結構類型的結構類型……(遞歸定義的結構類型)

如下面例程所示:

using System;



public class ArrSafe

{

unsafe public static void Main() //此處表明使用非安全代碼

{

Int32[] arr = new Int32[]{1,2,3,4,5};

fixed(Int32 *element = arr) //使用指針訪問

{

for(Int32 i = 0; i < arr.Length; i ++)

{

Console.WriteLine(element[i]);

}

}

}

}

七、 重新調整數組的長度

l 使用如下方法獲取創建新的數組長度(請參見.net framework sdk中的詳細描述)

創建使用從零開始的索引、具有指定 Type 和長度的一維 Array。

[C#] public static Array CreateInstance(Type, int);

創建使用從零開始的索引、具有指定 Type 和維長的多維 Array。維的長度在一個 32 位整數數組中指定。

[C#] public static Array CreateInstance(Type, params int[]);

創建使用從零開始的索引、具有指定 Type 和維長的多維 Array。維的長度在一個 64 位整數數組中指定。

[C#] public static Array CreateInstance(Type, params long[]);

創建使用從零開始的索引、具有指定 Type 和維長的二維 Array。

[C#] public static Array CreateInstance(Type, int, int);

創建具有指定下限、指定 Type 和維長的多維 Array。

[C#] public static Array CreateInstance(Type, int[], int[]);

創建使用從零開始的索引、具有指定 Type 和維長的三維 Array。

[C#] public static Array CreateInstance(Type, int, int, int);



l 然后使用Array.Copy()方法,將原來的數組拷貝到新數組中



主站蜘蛛池模板: 亚洲成a人片77777kkkk | 日日躁夜夜躁狠狠天天 | 亚洲一欧洲中文字幕在线 | 欧洲激情网站 | 一二三四社区在线高清3 | 日韩精品一区二区三区免费视频 | 中文在线√天堂 | 日韩欧美国产中文字幕 | 欧美视频日韩专区午夜 | 日韩黄色毛片 | 日日拍夜夜拍 | 天天操天天擦 | 日产在线观看 | 亚洲影视精品 | 欧洲一级做a爱在线观看 | 四虎精品免费永久在线 | 日本 欧美 国产 | 日韩欧美一区二区三区不卡 | 一本久久精品一区二区 | 五月婷婷六月婷婷 | 午夜美女视频在线观看高清 | 日本欧美在线视频 | 中日韩欧美风情视频 | 在线观看一区 | 日本黄色免费在线 | 天天做天天干 | 天天干夜夜叭 | 亚洲福利视频网 | 亚洲视频色 | 日韩欧美综合在线 | 中文字幕一二三四区 | 亚洲国产精品成人综合色在线婷婷 | 青青草原社区 | 天天干天天色综合 | 色爱区综合激情五月综合激情 | 亚洲 欧美 国产 日韩 制服 bt | 欧美性色黄大片四虎影视 | 欧美亚洲另类自拍偷在线拍 | 中文天堂在线最新版在线www | 日韩在线观看精品 | 欧美亚洲性色影视在线 |