Javaではfinal
、変数は1回だけ割り当てることができますが、その割り当てはプログラム内のどこでも行うことができることを意味します。C#では、フィールドはコンストラクターreadonly
でのみ割り当てることができることを意味します。これは、IMOではあまり役に立ちません。
ご存知のとおり、C#はJavaの設計に大きく影響されましたが、この違いは常に私を非常に奇妙なものとして困惑させてきました。CLRとJavaの動作があまり役に立たないという技術的な理由があるかどうか誰かが知っていますか?readonly
final
編集:
コメントに応えて; 私は不変性の利点をよく知っており、それをあらゆる場所で使用していることを指摘したいと思います。readonly
このため、Javaよりも有用性が低いと思います。
public class Foo
{
private readonly int _bar;
Foo()
{
_bar = 5;
}
}
おっと、私は実際にヘルパーメソッドでその値を初期化する必要があります!
public class Foo
{
private readonly int _bar;
Foo()
{
initialize()
}
private void initialize()
{
_bar = 5; //Can't compile because of semantics of readonly
}
}