düşünün:Okunan alanlar neden ref parametresiyle değiştirilebilir?
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"
Bu nasıl derliyor, yine de işe? Ben readonly
ile işaretlenmiş olarak, yapıcı dışında _value
alanına farklı bir değer atamak mümkün olmamalıdır. Bununla birlikte, bir yönteme ref
'u aktarın ve gerçekten de manipüle edilebilir.
bu tehlikeli midir? Niye ya? Benim için yanlış geliyor, ama parmağımı üzerine koyamıyorum.
:
Yukarıdaki kod bir çok söylüyorum derleyici hatası sağlar. Yararlı bir 'readonly' değişkeni * en az bir kez yazılmalıdır. Belirgin olmayan detay, alan başlatmanın yapıcıda gerçekte gerçekleşmesidir, C# derleyicisi kodu taşır. –