-Sadece okuma otomatik olarak uygulanan bir özellik mümkün mü?
Evet, bu mümkün olduğunu konuşuyor MSDN bir konu buldum.
Bu deyimi break gibi görünen bir test yaptım:
using System;
namespace Test
{
class Program
{
static void Main(string[] args)
{
Foo f = new Foo("1");
Console.WriteLine(f.Bar); // prints 1
f.Test("2");
Console.WriteLine(f.Bar);// successfully prints 2
}
}
class Foo
{
public Foo(string b)
{
this.Bar = b;
}
public string Bar { get; private set; }
public void Test(string b)
{
// this would be impossible for readonly field!
// next error would be occur: CS0191 or CS0191
// A readonly field cannot be assigned to (except in a constructor or a variable initializer)
this.Bar = b;
}
}
}
Nerede hata yapıyorum?
CEVAP
Cevap aşağıda 2010 yılında yazıldı. # 6 (2015 yılında piyasaya sürülecek) Colabilirsalt okunur otomatik olarak uygulanan özellikler: yazma
// This can only be assigned to in a constructor
public int Foo { get; }
Kesinlikle haklısın. Düzgün okuma-sadece otomatik olarak uygulanan özellikler şu anda imkansız. Pasör Özel yapım aynı şey, bazı kitaplar ve MSDN ki:) ne olursa olsun değil
Eğer dünyayı yöneten, bu durum olmaz. Haziran ayında NDC 2010 dil tasarımcıları (lütfen gel!) bazı gördüğümde Onlar kabul edene kadar ikna, ikna rüşvet ve genellikle sizi bunalttığım için denemek istiyorum. Sadece bir tanesiinceldiözelliği, tüm sonra.
Bu Microsoft Knowledge Base makalesi bakarak, metnin kendisini okumak-sadece otomatik bir özellik oluşturur böyle bir şey yok. Değişmez bir tip oluştururkullanarakotomatik bir özellik, ve bu doğru. Sadece sorunlu bit yorumlar söylüyor
// Read-only properties.
... kesinlikle yanlış olan. Çerçeve bizimle aynı fikirde:
var prop = typeof(Contact).GetProperty("Name");
Console.WriteLine(prop.CanWrite); // Prints True
Dinamik olarak nesne JavaScript adlı b...
Excel UTF-8 CSV dosyaları otomatik ola...
Neden Java statik olarak bir sınıf bil...
Nasıl programlı olarak gönderdiğiniz e...
Hızlı okuma çok büyük bir tablo R data...