C# 为什么冗余可访问性修饰符会出现编译时错误?
编译时错误 集合访问器的可访问性修饰符必须更大 比属性或索引器更严格 在这样的场景中 私有字符串TestString{get;private set;}C# 为什么冗余可访问性修饰符会出现编译时错误?,c#,compiler-construction,C#,Compiler Construction,编译时错误 集合访问器的可访问性修饰符必须更大 比属性或索引器更严格 在这样的场景中 私有字符串TestString{get;private set;} 为什么这会导致编译错误?我理解更严格的限制。不过,这不应该造成任何真正的问题。这是一个不必要的修改,而不是一个破坏构建的问题。为什么要杀死构建而不是抛出警告 如果有什么问题,最好将错误消息作为找到的冗余代码或类似内容来阅读,因为: 私有字符串TestString{get;private set;} 实际上与: 私有字符串TestString{g
为什么这会导致编译错误?我理解更严格的限制。不过,这不应该造成任何真正的问题。这是一个不必要的修改,而不是一个破坏构建的问题。为什么要杀死构建而不是抛出警告 如果有什么问题,最好将错误消息作为找到的冗余代码或类似内容来阅读,因为: 私有字符串TestString{get;private set;} 实际上与: 私有字符串TestString{get;set;}
但是,由于编译器强制执行该规则,因此获得该规则是有意义的,因为private当然不能比它本身受到更大的限制。这是令人困惑的。如果它成为一个投票,我赞成这个错误。编译时优化掉的未使用变量不再让人困惑。为什么我们不能做同样的事情?我觉得这与编译时错误的规范不一致,而编译时错误实际上是一个可读性问题。您真正的问题大概是,为什么语言的设计使得只能指定的访问修饰符受到严格的限制?编译器正在遵循规范。请将其保密或绝密。“那就行了。”琼斯凯在评论中回答了我的问题。