トマシープが学ぶ

Unity/VR/AR/デザイン好きのミーハー 記事内容は自分用のメモです

C#の本をやる:イディオム(Chapter4)

 実戦で役立つ C#プログラミングのイディオム/定石&パターン

イディオムとは、いろいろなコードの書き方がある中で先人たちが選んだ一番いい方法らしい。

 

初期化

var age = 25

ローカル変数の初期化

squmarigames.com

  var langs = new string[] { "C#" ,"VB","C++",};

最後コンマを付けてもつけなくても通るけど、付けたほうが追加が簡単だからよい

 

オブジェクトの初期化

 

            var person = new Person
            {
                name = "トマシープ";
              PhoneNumber = "012-3456-7890";
            };

判定

if ( age <= 19) {} 年齢は19以下

× if ( 19 >= age) {} 19が年齢以上か

 

if(MinValue <= num && num <= MaxValue){

 

bool

if( isStart ){}

× if( isStart == true ){}

私はわかりやすい下のほうが好きなのに。。。

 

returnするときは式を直接

return a==b;

return true;

 

繰り返し

配列のfor文を回すときはiから

for(var i=0,i<=5,i++){

item[i]

}

 

配列やリストのすべての要素を回してすべての要素に対して同じ処理をするならforeach

         var items = new[] { 1, 2, 3, 4, 5, 6, 7, 8 ,};
            foreach(var n in items)
            {
                Console.WriteLine(n);

            }
            var nums = new List<int> { 1, 2, 3, 4, 5, 6, 7, 8 };
            nums.ForEach(n => Console.Write(n)); ///ListならList.ForEachでかける

ループを抜けるときは

if(line.Length>40)

break;

 

ループから抜けると同時に呼び出し元のメソッドに戻る場合はreturn

            int Sin() { 
            foreach(var n in items)
            {
                if (n > 6)
                    return n;

                Console.WriteLine(n);

            }
            return -1;
            }

三項条件演算子

条件演算子

var num = isStart ? 1 : 0;

trueの時は:の左側、falseの時は右側が入る。

docs.microsoft.com

null合体演算子

var message = GetMessage(code) ?? defaultMessage();

nullだったら「??」の右側が入る

 

null条件演算子

return sale?.Product;

----------------------------------------------------------------------------------

こういうのは知っておかないと絶対読めないし、??とか:?とかググりづらいから知っておくべき。書くかどうかは別

読み取り専用プロパティ

public string GivenName{get; private set;}

params

数が決まっていない配列を受け取るとき

public double Median(params double[] args)

1を足す

++count

count++

後ろに置くのは知ってたけど前に置いてもいいんだ。

その他

path=@"\D:\CSharpPractice\CSharpPhraseBookAnswer\Chap04\Exercise1";

 

入れ替える

var temp = a;
a = b;
b = temp;