裏口からのC#実践入門
1-21 readonly が使えるケースで普通の変数を使う
初期化構文 -> コンストラクタの処理順。
using System; namespace Uraguchi { public class Tenshi21 { private readonly double x1 = 4989, x2 = 893, distance; public void Report() { Console.WriteLine("{0} と {1} の距離は {2} です。", x1, x2, distance); } public void OtherWork() { Console.WriteLine("他の仕事中だ。"); // コンパイルエラー // x1 = 4989; // x2 = 893; } public Tenshi21(double x1, double x2) { this.x1 = x1; this.x2 = x2; this.distance = Math.Abs(x2 - x1); } public static void Run() { var tenshi21 = new Tenshi21(2, 5); tenshi21.OtherWork(); tenshi21.Report(); } } }
1-22 列挙型を使わないで定数を定義する
数値自体に意味を持たない場合は列挙型を使う。
これはif文じゃなくてswitchを使うべきかな。
using System; namespace Uraguchi.Scene1 { public enum Tenshi22Sex { Male, Female } public enum Tenshi22Age { Child, Adult } public class Tenshi22 { public static void Report(Tenshi22Sex sex, Tenshi22Age age) { switch(sex) { case Tenshi22Sex.Male: Console.WriteLine("俺は男だ。"); break; default: Console.WriteLine("私は女よ。"); break; } switch(age) { case Tenshi22Age.Child: Console.WriteLine("僕は子供だ。"); break; default: Console.WriteLine("私は大人だ。"); break; } } public static void Run() { Report(Tenshi22Sex.Female, Tenshi22Age.Child); // コンパイルエラー // Report(Tenshi22Age.Adult, Tenshi22Sex.Male); } } }