0

我们有一些 C# 代码,其中有用下划线命名的受保护变量

protected string _name;
public string Name
{
   get
   {
      return _name;
   }
   set
   {
      _name = value;
   }
}

这会生成 CLS 合规性警告,因为 CLS 在开头不喜欢下划线。

用 [CLSCompliant(false)] 标记受保护变量的含义是什么?我什至不知道这是用什么语言来测试的问题。如果 _name 根本无法访问,这对我们的目的来说很好,但如果它导致命名模糊,则不是。

4

1 回答 1

1

某些语言不支持以下划线开头的变量。如果使用其中一种语言的客户想要从您的类继承,他将无法访问该_name字段。那些是什么语言,我不知道。

从设计的角度来看,我想知道为什么当公共(而不是虚拟)属性允许直接获取和设置时,你会有一个受保护的支持字段。重点是什么?在这种情况下,让继承者访问支持字段没有任何好处,并且无法更改Name属性的实现。

于 2011-11-08T18:51:27.363 回答