#line
#line 使您可以修改编译器的行号以及(可选)错误和警告的文件名输出。下面的示例说明如何报告与行号关联的两个警告。#line 200 指令强迫行号为 200(尽管默认值为 #7)。另一行 (#9) 作为默认 #line 指令的结果跟在通常序列后。
示例
下面的示例说明调试器如何忽略代码中的隐藏行。运行此示例时,它将显示三行文本。但是,当设置如示例所示的断点并按 F10 键逐句通过代码时,您将看到调试器忽略了隐藏行。还请注意,即使在隐藏行上设置断点,调试器仍会忽略它。
在日常开发的过程中我们总是会经常对代码进行编译,而在编译的过程中会出现许多信息,许多无用的警告信息总是会在便一点过程中提示出来,以干扰一些主要的警告,对此也是可以通过预处理器指令来进行关闭来阻止其显示,常见的警告如下(CS0219、CS0681等):
看一个例子:
[Obsolete("过期了",false)]
public static void aa()
{
}
static void Main()
{
int t=5; //警告:t已赋值,但其值从未使用
aa(); //警告:过期了
}
}
注意:我所使用的是vs2010如果多次编译会自动将警告去除,如希望确保警告在输出中被显示,可以为项目做下清理:
清理的作用就是将之前在bin目录中的程序集文件删除
如果我们希望不显示上图红框内的警告,我们可以用#pragma warning 指令来消除这些警告
在之前代码上添加预处理指令:
int i = 10;//警告:C.i已赋值,但从未使用过它的值得
[Obsolete("过期了",false)]
public static void aa()
{
}
static void Main()
{
int t=5; //警告:t已赋值,但其值从未使用
aa(); //警告:过期了
}
}
#pragma warning disable/restore 0618
其中disable/restore分别代表了禁用和开启警告,而后面的编号则代表了警告的编号,此处编写警告编号时无需以“CS”开头。
而这句代码只需书写在需要禁用或者开启的类文件中即可,这样此类对应的0618警告就不会出现了。
但是需要注意的是#pragma warning只对单个文件有作用,如果想禁用多个文件的警告可以使用编译器的/nowarn指令,具体可以见MSDN:点我进入
PS:#pragma 是一个单独的指令,而warning只是其中一个选项,#pragma的作用是:用于给编辑器提供特殊的指令,说明如何编译包含杂注的文件。
新闻热点
疑难解答