2011-08-16 41 views
0

假設我有:覆蓋只得到

public abstract class A { 
    public abstract string Name { get; } 
} 

我想使用 「快捷方式」 在子類中創建屬性:

public string Name { get; set; } 

相反的:

private string _Name; 
public string Name { 
    get{ return _Name; } 
    set{ _Name=Name; } 
} 

但是這導致編譯錯誤,因爲我有那裏

public class B { 
    public override Name{get; set;} 
} 

我怎樣才能只覆蓋get;

+0

@ yas4891:錯誤\t 43:無法重寫,因爲 '.... ItemsCount' 不具有可重寫的set訪問 – Naor

+0

@KevΩ:你刪除所有其他評論?我應該聽誰?只要離開它,讓我工作,因爲我知道! – Naor

+0

@KevΩ:好的,謝謝。 – Naor

回答

1
public class B { 
    private string iName; 
    public override string Name{get{ return iName;}} 
} 
在一個側面說明

: 你可以讓你的基類的接口,然後在實現類重寫:

public interface A { 
    string Name { get; } 
} 

public class B : A { 
    public string Name {get;set;} 
} 
+0

對不起,我的問題中的錯誤 - B類不是抽象的。 – Naor

3

只需實現吸氣:

public override string Name 
{ 
    get 
    { 
     return this.name; 
    } 
} 
private string name; 

速記對於一個簡單的get + set屬性來說,如果你想要一個簡單的get + set屬性,但是如果你想要一些更復雜的東西(比如只有一個getter的屬性),你需要實現它自己。

簡短的回答:沒有簡寫方式

+0

我正在尋找快捷方式 - 請在問題中查看。 – Naor

+0

@Naor我的回答只是說「沒有捷徑」 – Justin

+2

@Naor:Kragen是對的。如果無法設置隱藏字段,則無法檢索隱藏字段。 – yas4891