Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/318.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#_Visual Studio 2015 - Fatal编程技术网

C# 这真的是一种简化吗?

C# 这真的是一种简化吗?,c#,visual-studio-2015,C#,Visual Studio 2015,因此,我有一个非常简单的类,它有一个Id字段,可以在构造函数中设置Id 通常,我将使用this来明确标识类属性,而不是方法参数。对我来说,这似乎更清楚 IDE0003想让我删除带有消息“名称可以简化”的此,对吗 这对我来说似乎不太清楚,并且允许套管错误很容易导致id=id 几乎总是不需要这个关键字,请参阅 允许套管错误容易导致id=id 这本身将产生另一个警告: 对同一变量进行赋值;你的意思是分配其他的东西吗 如果使用,则this关键字是多余的,因为参数应为id,属性应为id。看来很清楚: pu

因此,我有一个非常简单的类,它有一个
Id
字段,可以在构造函数中设置
Id

通常,我将使用
this
来明确标识类属性,而不是方法参数。对我来说,这似乎更清楚

IDE0003想让我删除带有消息“名称可以简化”的
,对吗

这对我来说似乎不太清楚,并且允许套管错误很容易导致
id=id


几乎总是不需要
这个
关键字,请参阅

允许套管错误容易导致
id=id

这本身将产生另一个警告:

对同一变量进行赋值;你的意思是分配其他的东西吗

如果使用,则
this
关键字是多余的,因为参数应为
id
,属性应为
id
。看来很清楚:

public int Id 
{ 
   get; 
   private set; 
}


public VSOMessage(int id)
{
    Id = id;
}

请注意,指南本身没有说明使用或不使用
这个
关键字,但因为C#区分大小写,删除
这个
关键字是一种简化,但是当您不使用命名约定时,您可以命名属性
id
,而不是
id
,因此在这种情况下,您应该使用
这个
关键字。

另一个问题的答案是,您可以将编辑器配置为删除行为。我个人喜欢“这个”


如果要防止代码中出现警告,而不是更新Visual Studio设置,请使用SuppressMessage数据注释,该注释将防止出现警告

它看起来像这样:

[SuppressMessage("Reason #Enter whatever you'd like", "ID, must match what intellsense is showing it looks something like this: IDE0001", Justification = "(optional, your own description")]
下面是一个关于“此”变量情况的确切示例

[SuppressMessage("IntelliSenseCorrection", "IDE0003", Justification = "Allowing this variable to consistency/readability of code.")]

好吧,我想你已经说了:不是每一个“简化”都是一个“澄清”……我想它们都编译成了同一个东西。所以你只需要简化你所写的东西,没有其他东西。嗯,这些问题似乎只有在使用黑色编辑器窗口背景的程序员才会问。是的,那个灯泡很显眼。当背景较亮时,更容易不被它困扰:)当然这是一种“简化”,代码更少。但它在运行时完全没有区别,而且它肯定不会帮助您使用自动完成。@Hans我为我的编辑器使用黑色主题,因此我有权感到被冒犯。。)是的,在微软。真是个大疏忽,不是吗?C#区分大小写。在这种情况下,删除这个确实是一种简化。@DieterB,如果C#是区分大小写的(事实上),那么真正的简化应该是删除
这个
,而不是
这个
:p只是出于好奇,是否有微软的文章对默认情况下启用此类规则的原因进行了解释?例如,为什么他们不让默认规则集接受任何内容,因为VS 2013没有强制执行或注意任何特定样式?使用关键字
this
可以明确显示变量存在的位置。如果变量的前缀不是
this
base
,或者类的名称(对于静态方法),则变量的作用域是局部的,与方法一样是全局的。这使得意图和可读性比省略更清晰。关键字在这种情况下非常有用:“限定用相似名称隐藏的成员”。此外,并非每个成员变量都是属性,有些属性可能有一个支持变量(对于不可变对象特别有用)。另外,为静态方法使用
this
base
和类名可以提高可读性并巩固意图。请注意,这必须应用于函数声明,而不是“违规”语句。尝试将其应用于语句将引发“CS7014:属性在此上下文中无效”。然而,这就是我一直在寻找的解决方案。谢谢
[SuppressMessage("IntelliSenseCorrection", "IDE0003", Justification = "Allowing this variable to consistency/readability of code.")]