gpt4 book ai didi

c# - 为什么不能为 C# 中自动实现的属性指定不同的访问修饰符

转载 作者:太空狗 更新时间:2023-10-29 18:01:52 24 4
gpt4 key购买 nike

为什么下面的表达式无效? 我知道如何解决这些错误,但想知道现在允许此声明背后的基本原理。

public int Number {public get;protected set; }

我没有用例或应用程序来详细说明为什么允许这样做。但是编译器抛出 2 个错误:

Error   2   The accessibility modifier of the 'LambdaExpressions.Program.Person.Number.get' accessor must be more restrictive than the property or indexer 'LambdaExpressions.Program.Person.Number'    LambdaExpressions\LambdaExpressions\Program.cs  66  39  LambdaExpressions

Error   1   Cannot specify accessibility modifiers for both accessors of the property or indexer 'LambdaExpressions.Program.Person.Number'  LambdaExpressions\LambdaExpressions\Program.cs  66  24  LambdaExpressions

最佳答案

因为您已经必须先指定其中一个修饰符:

public int Number {public get;protected set; }
//^
//here

如果您在两个访问器上都有修饰符,那么该修饰符会修改什么?

即想象一个更奇怪的例子:

public int Number {protected get;protected set; }

Number什么部分或概念现在是public

根据@dash 的评论,来自 MSDN :

By default these accessors have the same visibility, or access level: that of the property or indexer to which they belong

You can use accessor modifiers only if the property or indexer has both set and get accessors. In this case, the modifier is permitted on one only of the two accessors.

(我的重点)

关于c# - 为什么不能为 C# 中自动实现的属性指定不同的访问修饰符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17269614/

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