覆盖只获得

时间:2011-08-16 08:10:00

标签: c# .net

假设我有:

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; }
}

但是这会导致编译错误,因为我有set;

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

如何仅覆盖get;

2 个答案:

答案 0 :(得分:3)

只需实现getter:

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

如果你想要一个简单的get + set属性,那么简单的get + set属性的简写很好,但是如果你想要一些更复杂的东西(比如只有一个getter的属性),你需要自己实现它。

简短回答:没有简写方式

答案 1 :(得分: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;}
}