本文介绍了我可以使用反射更改 C# 中的私有只读字段吗?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我想知道,既然很多事情都可以使用反射来完成,那么我可以在构造函数完成执行后更改私有只读字段吗?
(注:只是好奇)
I am wondering, since a lot of things can be done using reflection, can I change a private readonly field after the constructor completed its execution?
(note: just curiosity)
public class Foo
{
private readonly int bar;
public Foo(int num)
{
bar = num;
}
public int GetBar()
{
return bar;
}
}
Foo foo = new Foo(123);
Console.WriteLine(foo.GetBar()); // display 123
// reflection code here...
Console.WriteLine(foo.GetBar()); // display 456
推荐答案
您可以:
typeof(Foo)
.GetField("bar",BindingFlags.Instance|BindingFlags.NonPublic)
.SetValue(foo,567);
这篇关于我可以使用反射更改 C# 中的私有只读字段吗?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!