gpt4 book ai didi

c# - 空 setter 与属性中没有 setter

转载 作者:可可西里 更新时间:2023-11-01 03:05:07 25 4
gpt4 key购买 nike

这两个属性实现有什么区别?

public override string A
{
get { return "s"; }
set { }
}

public override string A
{
get { return "s"; }
}

最佳答案

好吧,因为 Aoverride,所以基类必须有 both getset (否则代码无法编译)例如

public class MyBase {
public virtual String A {
get {
return "getBaseA";
}
set {
throw new NotSupportedException("setBaseA");
}
}
}

现在你有两个不同的派生类:

public class MyDerivedA: MyBase {
public override String A {
get {
return "s";
}
set { // set is overridden, now set does nothing
}
}
}

public class MyDerivedB: MyBase {
public override String A {
get {
return "s";
}
// set is not overridden, same as in the base class
}
}

让我们调用这两个 set 方法:

// Does nothing: overridden MyDerivedA.A.set is called
MyBase test1 = new MyDerivedA();
test1.A = "Sample";

// Will throw NotSupportedException (base MyBase.A.set is called)
MyBase test2 = new MyDerivedB();
test2.A = "Sample";

关于c# - 空 setter 与属性中没有 setter,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38124814/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com