■
Scalaを見てて思ったのだけど、確かにstaticって必要ないな。あと規定がpublicでprivateを明示するのはとても正しいと思う。
object Hoge : HogeBase { string Name{ get; set; } override int Count{ get{ ... } } } こんな風にclassが入るところにobjectと書いたら、自動シングルトンになるべきだし、 クラス名.でシングルトンのメンバにアクセス出来るべきだ。 これがあればstaticには必要性がないだろう。 拡張メソッドは拡張メソッドクラスに書くようにしたらいい。 public class Hoge : HogeBase { static Hoge instance = new Hoge(); private Hoge(){} string _Name{ get; set; } //ここ書きようがない public override int _Count{ get{ ... } } public static string Name{ get{ return instance._Name; } set{ instance._Name = value; } } public static int Count{ get{ return instance._Count; } } } コンストラクタとメンバを自動記述する技も使いたい。 class Hoge(string Name, int Count = 0){} ↓ public class Hoge { public string Name{ get; private set; } public int Count{ get; private set; } public Hoge(string Name, int Count = 0) { this.Name = Name; this.Count = Count; } } デフォルトコンストラクタがあってセッターをパブリックにしたいならこれが使えるから セッターはデフォルトでprivateでいいと思う。 public class Hoge { public string Name{ get; set; } public int Count{ get; set; } } new Hoge{ Name = "Name", Count = 0 }
確かにScalaは勃起するほどいい言語だけども、全てを型推論でやってしまってIDEはまともに動くんだろうかという不安はある。