5
私は最近、C#に関するインタビューを受けました。そのうちの1つに私は答えを見つけることができません。私はクラスを与えられた インタビューの謎:私的なデータメンバーへのアクセス
は、次のようになります。メインクラスが与えられました。またpublic class Stick
{
private int m_iLength;
public int Length
{
get
{
return m_iLength;
}
set
{
if (value > 0)
{
m_iLength = value;
}
}
}
}
、
static void Main(string[] args)
{
Stick stick = new Stick();
}
タスクがでm_iLength
の原因となり、主にコードを追加しましたネガティブになるようにクラスをスティックします(そして、それができることを強調しました)。
私は何かを見逃しているようです。データメンバはプライベートであり、getとset関数がint型の値であることを知る限り、これはどのように行うことができません。
おそらく? – slawekwin
例:@stackoverflow.com/questions/10862747/access-private-fields – bobah75
@Sayse in C#クラスメンバーが「仮想」と宣言されていない限り、クラスメンバーをオーバーライドすることはできません。リフレクションは私が見ることができる唯一の方法です(基になるILを変更するのは不十分です。または、安全でないコードを使ってメモリバッキングのiLengthを変更することはできません)。 –