C# 可能错误的空语句警告
我是新来的编码,我一直有警告与一整天 “如果(Jtag.activeConnection);” 它给了我“可能错误的空话”。 这不会影响我的节目,但我看过的每一段视频都没有收到警告,我只想清除它。 下面是我的代码C# 可能错误的空语句警告,c#,C#,我是新来的编码,我一直有警告与一整天 “如果(Jtag.activeConnection);” 它给了我“可能错误的空话”。 这不会影响我的节目,但我看过的每一段视频都没有收到警告,我只想清除它。 下面是我的代码 public partial class Form1 : MetroFramework.Forms.MetroForm { XRPC Jtag = new XRPC(); public Form1() { InitializeComponent(
public partial class Form1 : MetroFramework.Forms.MetroForm
{
XRPC Jtag = new XRPC();
public Form1()
{
InitializeComponent();
}
private void Form1_Load(object sender, EventArgs e)
{
}
private void button1_Click(object sender, EventArgs e)
{
Jtag.Connect();
if (Jtag.activeConnection) ;
}
}
你的if语句是空的
if (Jtag.activeConnection) ;
因此,编译器要求您确认这是否真的是您想要做的
通常应该是这样的
if (Jtag.activeConnection)
{
// do something
}
你的if语句是空的
if (Jtag.activeConnection) ;
因此,编译器要求您确认这是否真的是您想要做的
通常应该是这样的
if (Jtag.activeConnection)
{
// do something
}
您将收到编译器警告() 因为 条件语句后的分号可能会导致代码以不同于预期的方式执行 这是一个警告,您可以通过编译器选项、pragma指令来抑制它,或者通过提供一个块来运行您的条件语句来更正它 我推荐梯子;这看起来是这样的:
Jtag.Connect();
if (Jtag.activeConnection)
{
// by virtue of having the blocks, and removing the semi-colon.. the warning goes away.
}
您将收到编译器警告() 因为 条件语句后的分号可能会导致代码以不同于预期的方式执行 这是一个警告,您可以通过编译器选项、pragma指令来抑制它,或者通过提供一个块来运行您的条件语句来更正它 我推荐梯子;这看起来是这样的:
Jtag.Connect();
if (Jtag.activeConnection)
{
// by virtue of having the blocks, and removing the semi-colon.. the warning goes away.
}
这个问题的两个方面似乎仍然没有答案 1) 我不知道他为什么要做到这一点:
if (Jtag.activeConnection) {}
也许他只是想对这个表达式进行评估(因为它的副作用)。如果是这样,我希望他可以这样做:
Jtag.activeConnection;
或者,如果这不起作用,他可以满足于这样做:
bool dummy = Jtag.activeConnection;
(尽管其中一个或两个可能会引发未使用结果的警告。)
2) 关于“可能错误的空语句”警告:可能他更喜欢将分支设置为,如果分支为,则将其设置为空代码>。有时我可能更喜欢代码>也在{}
上,如下所示:
if (expression)
;
else
;
根据MSDN C语言规范,这似乎是合法的。它编译。但是使用空表达式作为if-or-else分支会引发编译器警告:“可能是错误的空语句”(CS0642)。(这是一种糟糕的风格,因为单独的;
是模棱两可的。)(遗憾的是,没有明确的noop;
语句。)
我看不出有什么(明智的)方法可以让警告消失,因为只有那些台词。一些IDE具有针对不需要的警告的压缩单实例覆盖(嵌入在同一行末尾的注释文本中)。VS2005-VS2015只提供了我可以用#pragma warning disable 0642
和#pragma warning restore 0642
来包围有问题的行,这太难看了。(我也拒绝在整个程序上使用#pragma或compile选项-这太危险了。我想单独抑制每个特定的警告。)(C++提供了#pragma warning suppress
,它会抑制指定的错误一次(在下一行中)虽然只添加了一行丑陋的代码,但C(一定是决定永远不执行它。))
VS不反对我这样做(即使它什么也不做),但我不太喜欢。(它太高了。)
我也不想这样说。(它很紧凑,但是标准的自动漂亮打印不会将{}
缩进到;
所在的位置,尽管我认为应该如此。)
这个问题的两个方面似乎仍然没有答案
1) 我不知道他为什么要做到这一点:
if (Jtag.activeConnection) {}
也许他只是想对这个表达式进行评估(因为它的副作用)。如果是这样,我希望他可以这样做:
Jtag.activeConnection;
或者,如果这不起作用,他可以满足于这样做:
bool dummy = Jtag.activeConnection;
(尽管其中一个或两个可能会引发未使用结果的警告。)
2) 关于“可能错误的空语句”警告:可能他更喜欢将分支设置为,如果分支为,则将其设置为空代码>。有时我可能更喜欢代码>也在{}
上,如下所示:
if (expression)
;
else
;
根据MSDN C语言规范,这似乎是合法的。它编译。但是使用空表达式作为if-or-else分支会引发编译器警告:“可能是错误的空语句”(CS0642)。(这是一种糟糕的风格,因为单独的;
是模棱两可的。)(遗憾的是,没有明确的noop;
语句。)
我看不出有什么(明智的)方法可以让警告消失,因为只有那些台词。一些IDE具有针对不需要的警告的压缩单实例覆盖(嵌入在同一行末尾的注释文本中)。VS2005-VS2015只提供了我可以用#pragma warning disable 0642
和#pragma warning restore 0642
来包围有问题的行,这太难看了。(我也拒绝在整个程序上使用#pragma或compile选项-这太危险了。我想单独抑制每个特定的警告。)(C++提供了#pragma warning suppress
,它会抑制指定的错误一次(在下一行中)虽然只添加了一行丑陋的代码,但C(一定是决定永远不执行它。))
VS不反对我这样做(即使它什么也不做),但我不太喜欢。(它太高了。)
我也不想这样说。(它很紧凑,但是标准的自动漂亮打印不会将{}
缩进到;
所在的位置,尽管我认为应该如此。)
这是因为你有代码>在语句末尾。所以删除它。这是因为你有代码>在语句末尾。所以只要删除它。如果,则在之后没有任何内容。在button1\u Click
中你想做什么?如果是(Jtag.activeConnection),那么我的程序可以连接到哪个按钮