相关疑难解决方法(0)

为什么只能通过ref参数修改只读字段?

考虑:

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给一个方法,它确实可以被操纵.

这有危险吗?为什么?我感觉不对,但我不能完全指责它.

.net c# ref

12
推荐指数
1
解决办法
703
查看次数

标签 统计

.net ×1

c# ×1

ref ×1