gpt4 book ai didi

c# - 没有 get 的自动实现的属性给出编译错误

转载 作者:太空宇宙 更新时间:2023-11-03 19:54:43 25 4
gpt4 key购买 nike

public int MyWriteOnlyProperty1 { set; }      /* Error: Auto-Implemented properties must have get accessors.*/
public int MyWriteOnlyProperty2 { set { } } // No error

为什么一个有编译时错误,而另一个没有错误?两者之间是否存在任何有意义的差异,因此才以这种方式做出决定?

最佳答案

第二个不是自动实现的。在这种简单的情况下,编译器当然有可能去找出你的属性实现被破坏(因为 setter 没有做任何事情)但是很难涵盖“这个属性被破坏”的所有可能情况所以我想这就是为什么他们不会打扰,除非是微不足道的自动实现的属性。

例如考虑一下,属性的有效但奇怪的用法:

private int _myValue;
public int MyWriteOnlyProperty2 { set { _myValue = value; } }

或者这个示例,其中属性与您的示例一样损坏,但现在编译器很难知道。最好将其留给开发人员。

public int MyWriteOnlyProperty2 { set { DoNothing(value); } }
private void DoNothing(int value) { //Does nothing }

关于c# - 没有 get 的自动实现的属性给出编译错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35174198/

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