備忘録

政治/経済/自動運転/Python/Robotics

C#のオブジェクトは参照型であり、配列はオブジェクトである!!!

クラスのインスタンスの作成:

Vehicle minivan = new Vehicle(hoge, piyo);

参照型であることに注意!!!

 

配列のインスタンスの作成:

C#の配列はオブジェクト型であるのです!

書式1: 

 int sample = new int[10];

書式2:

 int sample;

 sample = new int[10];

書式3: 

 int nums = {1, 2, 3, 4}; 

 初期化時はnewが省略可能

書式4:

 int [,] table = new int[10, 20];

 2次元配列:[,]

書式5: 

 int[,,] multidim = new int[4, 10, 3];

 3次元配列

書式6: 

 int[,] sqrs = {

    {1, 1} ,

    {2, 4} ,

    {3, 9} 

 };

 多次元配列の初期化

書式7:

 int jagged = new int[3];

 jagged[0] = new int[2];

 jagged[1] = new int[3];

 jagged[2] = new int[4];

 ジャグ配列、配列の配列:

 全体のメモリ割り当ててから、各々のまた割り当てる

 

cf) 配列のLengthプロパティ:for文とかに有用

 

書式8:

 var vals = new {1, 2, 3, 4, 5};

 暗黙的に型指定されるローカル配列を宣言する場合はvarを使用する。

 はつけないことに注意!!

 初期化が必ず必要で、各要素は同じ型もしくは互換性のある型である必要。

 多くの場合、LINQベースのクエリで使用される。

 

cf) foreachループ

 int nums = new int[10];

 foreach (int x in nums){

  //

 }

 反復変数は読み取り専用であることに注意。

 

cf) C#では文字列はオブジェクト。したがってstringは参照型。

 書式1:

    string str = "hoge";

 書式2:

    char chrs = { 'h', 'o', 'g', 'e'};

    string str = new string(chrs);

 stringクラスは文字列を操作するためのmethodを備えている。

 Copy(str)

 CompareTo(str)

 IndexOf(str)

 LastIndexOf(str)

 2つの文字列が等しいかどうか調べるためには==が使える。

 通常、オブジェクトの参照変数に==を使うと、同じオブジェクトを指しているかどうかで判定されるが、文字列の場合は内容が比較されることに注意。

 また、stringの参照先を変えることはできるが、stringオブジェクト自身の内容は変えることができないことにも注意。