重複の可能性:
C# は、同じ包含クラス内にあるときに、クラス自体の外部にあるプライベート変数へのアクセスを許可するのはなぜですか?
どうやら以下のコードは合法であり、さらに驚くべきことに、フレームワーク2以降は合法です...
public class Magic
{
private readonly int _anInt;
private readonly string _aString;
public Magic(int anInt, string aString)
{
_anInt = anInt;
_aString = aString;
}
public Magic(Magic toCopy)
{
_anInt = toCopy._anInt; // Legal!
_aString = toCopy._aString; // Legal!
}
public void DoesntWorkMagic(Magic toCopy)
{
_anInt = toCopy._anInt; // edit: Will work if not readonly.
_aString = toCopy._aString;
}
public int AnInt { get { return _anInt; } }
public string AString { get { return _aString; } }
}
どうしたの?私は何年にもわたって非常に多くのコピー コンストラクターが余分な作業を行っているのを見てきました。その使用に関する注意事項はありますか (明らかなスレッド化の問題以外に)?