考虑:
class Foo
{
private readonly string _value;
public Foo()
{
Bar(ref _value);
}
private void Bar(ref string value)
{
value = "hello world";
}
public string Value
{
get { return _value; }
}
}
// ...
var foo = new Foo();
Console.WriteLine(foo.Value); // "hello world"
Run Code Online (Sandbox Code Playgroud)
这甚至是如何编译的,但仍有效?我不应该_value为构造函数之外的字段分配不同的值,因为它标记为readonly.但是,将它传递ref给一个方法,它确实可以被操纵.
这有危险吗?为什么?我感觉不对,但我不能完全指责它.