C#で単純なクラスを定義してみた。
名前と年齢を表すフィールドと,そのアクセッサー。
そして,toStringをオーバーライド。
これだけの単純なクラスをC#で作りたいと思います。
Javaだとこんな感じですかね。
public class Person { private String mName; private int mAge; public Person(String name, int age) { mName = name; mAge = age; } public String getName() { return mName; } public int getAge() { return mAge; } public void setAge(int age) { mAge = age; } @Override public String toString() { return String.format("[%s : age %d]", mName, mAge); } }
使う側。
public static void main(String[] args) { Person taro = new Person("Taro", 24); System.out.println(taro); System.out.println(String.format("%s is %d years old.", taro.getName(), taro.getAge())); taro.setAge(taro.getAge() + 1); System.out.println("A year later."); System.out.println(String.format("%s is %d years old.", taro.getName(), taro.getAge())); System.out.println(taro); }
C#で書いてみました。
こんな感じですかね。
class Person { private string name; private int age; public Person (string name, int age) { this.name = name; this.age = age; } public string GetName () { return name; } public int GetAge () { return age; } public void SetAge (int age) { this.age = age; } public override string ToString () { return string.Format ("[{0} : age {1}]", name, age); } }
使う側は,
public static void Main (string[] args) { Person taro = new Person ("taro", 24); Console.WriteLine (taro); Console.WriteLine (string.Format ("{0} is {1} years old.", taro.GetName(), taro.GetAge())); taro.SetAge(taro.GetAge() + 1); Console.WriteLine ("A year later."); Console.WriteLine ("{0} is {1} years old.", taro.GetName(), taro.GetAge()); Console.WriteLine (taro); }
フィールド・インスタンス変数の命名規約
Code Style Guidelines for Contributorsに沿ってJavaを書く際自分は,
privateで否staticなフィールド名には,「m」をつけています。
C#の方は,
技術評論社さんの"読みやすく効率的なコードの原則 C#ルールブック"の56ページ。
「2.12.3 public 以外のインスタンス変数はCamel形式にする」に従い,
フィールド(C#だからインスタンス変数か)Camel形式にしました。