C#をもう一度やりなおす
■基礎文法
◇ switch
Q. caseに式を使える?
A. No
Q. フォールスルーができない?
A. できなくはない。
var i = 22;
switch (i)
{
// 連続して書くとフォールスルーできる
case 22:
case 33:
case 44:
Console.WriteLine("22 or 33 or 44");
break;
default:
Console.WriteLine("その他");
// このbreakを省略できない
break;
}
◇ yeild return
private static void sampleYieldReturn()
{
foreach (var i in range(20, 25))
Console.WriteLine(i); //=> 20,21,22,23,24,25
}
private static IEnumerable<int> range(int s,int e)
{
for(var i = s;i <= e;i++)
yield return i;
}
◇ Nullable型
private static void sampleNullable()
{
// これはだめ
// int i = null;
// こっちはok
int? i = null;
// ?? 向けの特別な演算子
Console.WriteLine(i ?? 44); //=> 44
// これはだめ
// Console.WriteLine(null ?? 55);
}
◇ constとreadonly
/// <summary>
/// readonlyはローカル変数にできない。
/// constとは異なり、staticにしないこともできる。
/// コンストラクタの中では値の書き換えが可能。
/// </summary>
private readonly DateTime today = new DateTime();
/// <summary>
/// C#ではstaticと同じ扱いになる
/// メソッド内でも宣言可能
/// </summary>
private const string CONST_STR = "TEST";
private static void sampleConstants()
{
// constが使えるのはプリミティブ型、文字列型、列挙型
const string CONST_STR_2 = "TEST";
Console.WriteLine(CONST_STR_2);
}
◇ 列挙型
/// <summary>
/// デフォルトでintが内部型になる。
/// ただし、プリミティブな数値型しか使えない。
/// </summary>
enum DayOfWeek : byte
{
Mon,Tue,Wed,Thu,Fri,Sat,Sun
}
C#のvarってローカル変数の宣言(引数はNG)でしか使えないんだね。
なんか、これじゃなんのためにあるのコレって気がするのですが。。。
可読性を下げるため?
知ってる人、教えてぷりーず☆