Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/sockets/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# &引用;这";对于成员变量?“为什么不呢?”;";或者只是_&引用;像以前一样?_C#_Coding Style - Fatal编程技术网

C# &引用;这";对于成员变量?“为什么不呢?”;";或者只是_&引用;像以前一样?

C# &引用;这";对于成员变量?“为什么不呢?”;";或者只是_&引用;像以前一样?,c#,coding-style,C#,Coding Style,最近我注意到C中的类成员变量,移动到this.foobarbaz中,用于类成员变量的每个引用,而不是以前可以接受的m或仅。你们当中有多少经验丰富的程序员正在按照这个新的可接受的标准编码,如果是,为什么,如果不是为什么?我这样问是因为它改变了我们工作中的编码标准,对一些人来说,这可能是一个艰难的销售。然后我问:什么是静态类变量s_uu或that.foobarbaz好吧,开个玩笑。谢谢-老人。关键字this仅用于指定我们正在引用此实例。人们没有义务总是指定这一点,除非人们希望明确变量是实例之一,而不

最近我注意到C中的类成员变量,移动到
this.foobarbaz
中,用于类成员变量的每个引用,而不是以前可以接受的
m
或仅
。你们当中有多少经验丰富的程序员正在按照这个新的可接受的标准编码,如果是,为什么,如果不是为什么?我这样问是因为它改变了我们工作中的编码标准,对一些人来说,这可能是一个艰难的销售。然后我问:什么是静态类变量
s_uu
that.foobarbaz
好吧,开个玩笑。谢谢-老人。

关键字this仅用于指定我们正在引用此实例。人们没有义务总是指定这一点,除非人们希望明确变量是实例之一,而不是参数或类似的东西


大多数情况下,我看到下划线字符用于指定字段成员,很少看到
m

在大写惯例部分,它更适合框架中的代码。我很确定
m_
是在.NET1.0之前的Visual Studio 6中出现的

选择符合这些准则的标识符可以提高您的库的可用性,并鼓励用户相信您的库不需要学习一套新的约定


由于局部变量也是驼峰式的,“this”区分作为类成员的变量,因此大多数语法工具(StyleCop、FXCop、CodeIt.Right)将标记缺少this的类成员,或者包含作为警告的
m

当类成员变量与传递给函数或构造函数的局部变量同名时,这种语法是必要的

public class Foo 
{
    private string name;

    public Foo(string name) 
    {
        this.name = name;
    }
}

就我个人而言,当开发人员以这种方式编码时,我觉得这是一个PITA,我更喜欢在成员变量前面加一个下划线,就像以前一样。

因为
这个
只在必要时使用。为标识符添加前缀会迫使您在任何地方使用它,这非常不方便

< > 或 My前缀是C++不适合C语言的剩余部分。

首先,阅读“框架设计指南”(CWILNI/ABRAM)。然后,下载并使用FxCop。它将教会你很多,并且(希望)改变你对编码的看法

其次,除了最佳实践是“经过时间考验的解决问题的最佳方式”之外,有时,如果有几个“正确”的答案,为了一致性,您会选择一个。有了命名标准,我们可以“稍微”更直观地摆脱匈牙利符号、尖声大写和缩写,例如使用PascalCase和camelCase。这项公约现在是公认的标准。使用其他样式没有错,但肯定没有好处


最后,在你的帖子中,“this”键盘不是前缀。这是一种语言约定(在VB.NET中,它是“我”)。当您使用this.variableName时,您只是非常具体地说“我引用的是当前实例的类级成员。它不是任意前缀。希望这能有所帮助。

我自己的首选是仅使用'I'前缀装饰接口。
其他所有变量(包括成员变量、静态变量和与控件相关的变量)都使用不带前缀的pascal大小写(尤其是匈牙利语或下划线).

通常,当我在.NET代码中看到大量的
this.Member
时,与其说它是一种风格选择,不如说它是原始编码者试图提出IntelliSense的指标;键入
this.
是一种方法,但不幸的是它留下了痕迹

学习键盘快捷键(Ctrl-J)可以让你浏览更大的列表,但留下更干净的代码。

我非常喜欢使用“this” 最大的一个原因是,这会告诉编译器您的意图,当出现错误时,它会向您发出警告/错误。您无法从mÈ中获得这一点

几乎每个和我谈论“这件事”的人都有抵触情绪。更多的打字,看不到价值,等等,改变是可怕的,等等。试图说服某人(更不用说团队)这样做对每个人来说都是痛苦的。他们要么看到价值,要么不看到


对于静态,在类的内部我不做任何事情,在类的外部我使用类名。

通常这些“讨论”“类型问题很快就解决了。堆栈溢出不是真的要讨论的。好的,对不起,只是一个编码标准问题。请关闭。m_u和u用于在Intellisense中对所有成员变量进行排序,visual studio顶部的下拉框列出了该类的所有成员和方法,我希望他们可以将其配置为按类型进行排序,并且在该下拉框中键入名称时只拾取第一个字符,MS需要解决这个问题并使其可配置谢谢-顺便说一句-我已经采用了更新的标准,因为我发现它更明显。我只是指C。我不知道VB。谢谢-好消息。-老马是C++(和java),我来自哪里。虽然不合适,但我到处都能看到它们……不是“这个类”,而是“这个对象”。这不能用于指代类(静态)成员。您应该将措辞改为“this very instance”,而不是“this very class”。类成员是静态的。@code4life和@Micheal Shimins:谢谢您的评论。我将“this very class”改为“this very instance”。=)Ctrl-Space还应该激活intellisense,仅供参考。我不明白您关于编译器的观点以及使用它引用成员变量的观点-正确使用前缀不会提供什么额外的保护?。有下划线前缀是一个长期确立的“标准”,它不仅将成员变量分组在intellisense列表的顶部,而且我还可以直观地告诉您变量是