2016-12-23 7 views
13

Mój przypadek:Dlaczego nie można przypisać do składni tylko do odczytu składni lambda w konstruktorze?

public class A 
{ 
    public string _prop { get; } 
    public A(string prop) 
    { 
     _prop = prop; // allowed 
    } 
} 

Inny przypadek:

public class A 
{ 
    public string _prop => string.Empty; 
    public A(string prop) 
    { 
     // Property or indexer 'A._prop' cannot be assigned to -- it is read only 
     _prop = prop; 
    } 
} 

Zarówno składnia:

public string _prop { get; } 

i

public string _prop => string.Empty; 

utworzyć właściwość tylko do odczytu. Ale dlaczego nie mogę go przypisać w drugim przypadku?

+0

Istnieje również 'public string Prop {get; } = string.Empty; ', aby zainicjować właściwości automatycznie zaimplementowane tylko do odczytu. –

+0

Wreszcie napisałem artykuł: http://blog.rogatnev.net/2017/09/13/Varieties-of-properties.html – Backs

Odpowiedz

15
public string _prop => string.Empty; 

jest równa:

public string _prop { get { return string.Empty; } } 

Więc string.Empty jest jak kod metody w metodzie get.

public string _prop { get; } 

jest równa:

private readonly string get_prop; 
public string _prop { get { return get_prop;} } 

sposób można przypisać get_prop wartość z konstruktora;

Więcej informacji pod numerem the article.

+0

Wielkie dzięki! :) –

+0

@ TânNguyễn chętnie pomoże! – Backs

Powiązane problemy