C# 这样做。减速码?

C# 这样做。减速码?,c#,coding-style,C#,Coding Style,我们对成员变量进行了下划线前缀与无下划线前缀(永无止境)的辩论,有人提到您使用的是“this”。由于“this”中的“.”,您的代码将比“-”慢。这是真的吗?有人能量化这一点吗?不,这毫无意义。只要看看IL,踢那个开发人员的屁股 同样,我喜欢成员变量中的下划线。使用this关键字时似乎没有什么区别。如果您有以下代码: class Class3 { private long id; public void DoWork() { id = 1;

我们对成员变量进行了下划线前缀与无下划线前缀(永无止境)的辩论,有人提到您使用的是“this”。由于“this”中的“.”,您的代码将比“-”慢。这是真的吗?有人能量化这一点吗?

不,这毫无意义。只要看看IL,踢那个开发人员的屁股


同样,我喜欢成员变量中的下划线。

使用this关键字时似乎没有什么区别。如果您有以下代码:

class Class3
{
    private long id;

    public void DoWork()
    {
        id = 1;
        this.id = 2;
    }
}
当您通过反射器运行它时,您将看到以下输出:

internal class Class3
{
    // Fields
    private long id;

    // Methods
    public void DoWork()
    {
        this.id = 1L;
        this.id = 2L;
    }
}
在我看来,“this.”是编译时的消歧器。它告诉编译器变量的范围。这可能是不必要的,因为编译器在任何情况下都需要找出作用域。但我无法想象会有任何性能下降,甚至像你“暗示”的那样有微观的上升

一旦代码被编译(即在运行时),我认为“this.”是完全不相关的

所以这是一种风格选择。有些人喜欢简洁。我喜欢“这个”,因为正确使用它会增加清晰度。它告诉其他开发人员函数或属性所在的位置。我将其用于任何公共方法或属性。我通常不与私人会员一起使用它


Juval Lowy在这里有一个非常好的C风格指南:

当你有了Camelcasting,谁需要下划线?我还想说,你所做的听起来像个疯狂的想法。

变量表示内存中的位置。编译时,100个字符的变量和一个字母的变量都转换为数字。以同样的方式翻译特殊字符,不会对速度产生任何影响

你写了一个有没有这个的样本?你量过了吗?你学到了什么?@S.Lott-对你有好处-这里有太多的问题,可以通过简单的测试快速回答。杰夫会因为你这么说而狠狠地揍你一顿,德斯蒂尔。玛安。。。强调:p我从来都不喜欢下划线这段时间。。很久以前我就知道什么是计算机编程了!我同意,除了下划线。我讨厌他们。我认为它们使阅读变得更难(尽管如果不使用intellisense,则可以更容易地导航)。下划线前缀非常棒。我发现这很容易区分本地人和会员。我同意下划线。我班上所有的私人成员都有下划线。它将变量置于intellisense列表的顶部,并将它们与本地方法级变量分离。如果编辑器无法将本地变量与成员的颜色区分开来,则需要一个新的编辑器。任何人类的惯例都是容易出错的,而且是对工具不足的愚蠢补偿。我对局部变量使用camelCasing,对字段使用前导下划线。事实上,这并不完全正确。。。变量名必须保存在编译程序集中的某个地方,因为像Reflector这样的反汇编程序能够显示它们。。。但无论如何,它对代码的执行方式没有影响……但是如果我没有弄错的话,您需要pdb文件。我的观点是,在较低的级别上,您将拥有只有编译器才能理解的与原始变量名大小无关的标记。