精华内容
参与话题
问答
  • #line #line 使您可以修改编译器的行号以及(可选)错误和警告的文件名输出。下面的示例说明如何报告与行号关联的两个警告。#line 200 指令强迫行号为 200(尽管默认值为 #7)。另一行 (#9) 作为默认 #line 指令的...
  • C#预处理指令之#line、#pragma warning(转) 出处:http://www.cnblogs.com/jhxk/articles/2574556.html #line #line 使您可以修改编译器的行号以及(可选)错误和警告的文件名输出。下面的示例说明如何报告与...

    C#预处理指令之#line、#pragma warning(转)

    http://www.cnblogs.com/jhxk/articles/2574556.html

    #line 

    #line 使您可以修改编译器的行号以及(可选)错误和警告的文件名输出。下面的示例说明如何报告与行号关联的两个警告。#line 200 指令强迫行号为 200(尽管默认值为 #7)。另一行 (#9) 作为默认 #line 指令的结果跟在通常序列后。

    class MainClass{
         static void Main() {
             #line 200
             int i; // CS0168 on line 200
             #line default
             char c; // CS0168 on line 9
          }
    }


    备注: 
    #line 指令可能由生成过程中的自动中间步骤使用。例如,如果行从原始的源代码文件中移除,但是您仍希望编译器基于文件中的原始行号生成输出,则可以移除行,然后用 #line 模拟原始行号。 #line hidden 指令对调试器隐藏若干连续的行,这样当开发人员在逐句通过代码时,将会跳过 #line hidden 和下一个 #line 指令(假定它不是另一个 #line hidden 指令)之间的所有行。此选项也可用来使 ASP.NET 能够区分用户定义的代码和计算机生成的代码。尽管 ASP.NET 是此功能的主要使用者,但很可能将有更多的源生成器使用它。
    #line hidden 指令不会影响错误报告中的文件名或行号。即,如果在隐藏块中遇到错误,编译器将报告当前文件名和错误的行号。
    #line filename 指令指定您希望出现在编译器输出中的文件名。默认情况下,使用源代码文件的实际名称。文件名必须括在双引号 ("") 中。 源代码文件可以具有 #line 指令的任何编号。


    示例 
    下面的示例说明调试器如何忽略代码中的隐藏行。运行此示例时,它将显示三行文本。但是,当设置如示例所示的断点并按 F10 键逐句通过代码时,您将看到调试器忽略了隐藏行。还请注意,即使在隐藏行上设置断点,调试器仍会忽略它。
    // preprocessor_linehidden.cs
    using System;
    class MainClass {
          static void Main() {
               Console.WriteLine("Normal line #1."); //这里设置断点
               #line hidden
               Console.WriteLine("Hidden line.");
              #line default
              Console.WriteLine("Normal line #2.");
           }
    }

     

    #pragma warning指令:允许我们关闭及重新开启警告消息

    在日常开发的过程中我们总是会经常对代码进行编译,而在编译的过程中会出现许多信息,许多无用的警告信息总是会在便一点过程中提示出来,以干扰一些主要的警告,对此也是可以通过预处理器指令来进行关闭来阻止其显示,常见的警告如下(CS0219、CS0681等):

    看一个例子:

    public class C
    {
        int i = 10;//警告:C.i已赋值,但从未使用过它的值

        [Obsolete("过期了",false)]
        public static void aa() { 
            
        }

      
        static void Main(){
            int t=5; //警告:t已赋值,但其值从未使用
            aa(); //警告:过期了

        }
    }

    编译生成消息如下:

     

    注意:我所使用的是vs2010如果多次编译会自动将警告去除,如希望确保警告在输出中被显示,可以为项目做下清理:

    清理的作用就是将之前在bin目录中的程序集文件删除

     

    如果我们希望不显示上图红框内的警告,我们可以用#pragma warning 指令来消除这些警告

    在之前代码上添加预处理指令:

    #pragma warning disable 0618,0219,0414
    public class C{

        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的作用是:用于给编辑器提供特殊的指令,说明如何编译包含杂注的文件。

    展开全文
  • #line #line 使您可以修改编译器的行号以及(可选)错误和警告的文件名输出。下面的示例说明如何报告与行号关联的两个警告。#line 200 指令强迫行号为 200(尽管默认值为 #7)。另一行 (#9) 作为默认 #line 指令的...
    #line
    #line 使您可以修改编译器的行号以及(可选)错误和警告的文件名输出。下面的示例说明如何报告与行号关联的两个警告。#line 200 指令强迫行号为 200(尽管默认值为 #7)。另一行 (#9) 作为默认 #line 指令的结果跟在通常序列后。


    class MainClass
    {
         static void Main()
         {
             #line 200
             int i; // CS0168 on line 200
             #line default
             char c; // CS0168 on line 9
          }
    }


    备注:
    #line 指令可能由生成过程中的自动中间步骤使用。例如,如果行从原始的源代码文件中移除,但是您仍希望编译器基于文件中的原始行号生成输出,则可以移除行,然后用 #line 模拟原始行号。 #line hidden 指令对调试器隐藏若干连续的行,这样当开发人员在逐句通过代码时,将会跳过 #line hidden 和下一个 #line 指令(假定它不是另一个 #line hidden 指令)之间的所有行。此选项也可用来使 ASP.NET 能够区分用户定义的代码和计算机生成的代码。尽管 ASP.NET 是此功能的主要使用者,但很可能将有更多的源生成器使用它。
    #line hidden 指令不会影响错误报告中的文件名或行号。即,如果在隐藏块中遇到错误,编译器将报告当前文件名和错误的行号。
    #line filename 指令指定您希望出现在编译器输出中的文件名。默认情况下,使用源代码文件的实际名称。文件名必须括在双引号 ("") 中。 源代码文件可以具有 #line 指令的任何编号。


    示例
    下面的示例说明调试器如何忽略代码中的隐藏行。运行此示例时,它将显示三行文本。但是,当设置如示例所示的断点并按 F10 键逐句通过代码时,您将看到调试器忽略了隐藏行。还请注意,即使在隐藏行上设置断点,调试器仍会忽略它。
    // preprocessor_linehidden.cs
    using System;
    class MainClass
    {
          static void Main()
          {
               Console.WriteLine("Normal line #1."); //这里设置断点
               #line hidden
               Console.WriteLine("Hidden line.");
              #line default
              Console.WriteLine("Normal line #2.");
           }
    }

     

    #pragma warning指令:允许我们关闭及重新开启警告消息

    在日常开发的过程中我们总是会经常对代码进行编译,而在编译的过程中会出现许多信息,许多无用的警告信息总是会在便一点过程中提示出来,以干扰一些主要的警告,对此也是可以通过预处理器指令来进行关闭来阻止其显示,常见的警告如下(CS0219、CS0681等):

    看一个例子:

    public class C
    {
        int i = 10;//警告:C.i已赋值,但从未使用过它的值

        [Obsolete("过期了",false)]
        public static void aa()
        {
           
        }

     
        static void Main()
        {
            int t=5; //警告:t已赋值,但其值从未使用
            aa(); //警告:过期了

        }
    }

    编译生成消息如下:

     

    注意:我所使用的是vs2010如果多次编译会自动将警告去除,如希望确保警告在输出中被显示,可以为项目做下清理:

    清理的作用就是将之前在bin目录中的程序集文件删除

     

    如果我们希望不显示上图红框内的警告,我们可以用#pragma warning 指令来消除这些警告

    在之前代码上添加预处理指令:

    #pragma warning disable 0618,0219,0414
    public class C
    {

        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的作用是:用于给编辑器提供特殊的指令,说明如何编译包含杂注的文件。

     

     

     

    转载于:https://www.cnblogs.com/jhxk/articles/2574556.html

    展开全文
  • using关键字在C#中主要有两个用途: 1.引用命名空间,以减少输入 如 using System.Text; 2.为命名空间创建别名 如 using Project = PC.MyCompany.Project; 具体见:...

    using关键字在C#中主要有两个用途:

    1.引用命名空间,以减少输入 如 using System.Text;

    2.为命名空间创建别名 如 using Project = PC.MyCompany.Project;
    具体见:http://msdn.microsoft.com/zh-cn/library/sf0df423(v=VS.80).aspx

    3.用于在限定范围结束后自动释放资源,如自动释放数据连接、事务句柄等

    这种用法常常在数据库的连接语句中应用到

    4.还有一种就是用try catch finally的格式(using的语句十分简洁而且在using中不用再写close,而try catch finally格式要在最后的finally中关闭连接conn.Close())

    其含义具体见:http://msdn.microsoft.com/zh-cn/library/yh598w02(v=VS.80).aspx

    页面下方的:using语句的本质就:using语句实际上生成的IL代码中是一个try, finally代码块,在finally代码块里释放资源。

    这些里面可能会出现一个conn.Dispose(),它和conn.Close()是有区别的
    如:
    conn.Open()
    conn.Close()
    conn.Open()//这是可以的
    -----------------------
    conn.Open()
    conn.Close()
    conn.Dispose()//出错
    可见dispose就是将conn毁掉,不能再用
    对于是using还是try-catch-finally,可以参见:
    综上可得:
    using语句简洁;
    using的本质也是try-catch-finally,而且在finally里会调用Dispose,而且Dispose内部会自动判断有无close,如果无,会自动先close,然后Dispose;
    两种结构的用途不一样,如果是专门的纠错,try-catch-finally更合适;
    推荐使用using,需要try catch finally的时候也可以用
     
     
    #warning与#error的区别!
    #warning在编译器中运行时! 产生警告信息! 给用户显示#warning后面的文本,之后继续编译!
     
    #error在编译器中运行时! 产生错误信息! 给用户显示#error后面的文本,之后退出编译!
     
    展开全文
  • #pragma warning

    千次阅读 2009-11-24 14:35:00
    每次编译从网上下载的开源代码,我都会对着 Error List 窗口里密密麻麻的黄色 Warning 信息发呆。可能我有那么点 "洁癖",因为有很多警告信息实在没有必要弄出来干扰我们的视线。  利用 C# 预处理指令...

    每次编译从网上下载的开源代码,我都会对着 Error List 窗口里密密麻麻的黄色 Warning 信息发呆。可能我有那么点 "洁癖",因为有很多警告信息实在没有必要弄出来干扰我们的视线。

       

    利用 C# 预处理指令(Preprocessor Directives),我们可以屏蔽掉那些我们能确认的警告信息。比如:

    try

    {

      // do something...

      throw new Exception();

    }

    catch (Exception ex)

    {

      // TODO: 记录错误日志

    }

    我们已经使用了 TODO 标记,表示会在日后某个时间补全这段代码。但当我们编译(Build)时,会出现如下警告信息。

       

       

    接下来,我们请出 "#pragma warning"

    #pragma warning disable 0168

    try

    {

      throw new Exception();

    }

    catch (Exception ex)

    {

      // TODO: 记录错误日志

    }

    #pragma warning restore 0168

    再次编译,警告信息没有了,世界终于清净了。

    你或许奇怪数字 "0168" 怎么来的,在警告信息右键菜单单击 "Show Error Help" 打开 MSDN Explorer 就行了。

       

       

       

    我们平时用到的预处理指令还有很多,包括我们已经习惯了的 #if#region 等等。

       

    #if

    #else

    #elif

    #endif

       

    #define

    #undef

       

    #warning

    #error

    #line

       

    #region

    #endregion

       

    #pragma

    #pragma warning

    #pragma checksum

       

    最后严重恼火一把,System.Web.Script.Serialization.JavaScriptSerializer 明明是 FX 3.5 才加入的,怎么也被加上 Obsolete 标记了?难道是临时方案?

    展开全文
  • C#warning

    千次阅读 2016-10-10 11:58:27
    #pragma warning disable //需屏蔽警告的源代码 #pragma warning restore //此方法很好用,缺点就是麻烦了点(可忽略); #pragma warning disable 0649 屏蔽0649的warning 2. 在工程属性->生成->...
  • <div><p>Warning: this builds on the changes submitted in #229 (thus the commits below). Please merge #229 first. <p>It looks like I'm done with Unit 2 / Lesson 2, took me longer than I first ...
  • 1,#if #endif ...#warning is unity editor #else #error is not unity editor #endif  } #error使您可以从代码中的特定位置生成错误。 #warning 使您得以从代码的特定位置生成一级警告。 2,dynamic 任...
  • C#的预处理命令其实还是蛮有用的,但是真正使用过...除此之外还有一些预处理命令#warning,#error,#region#endregion,#line,#pragma等,在这里就不一一介绍,都比较简单。 使用预处理器指令可以禁止编译器编译代码...
  • ] Checked behavior in OpenStudioApplication, adjusted policies as needed (<code>src/openstudio_lib/library/OpenStudioPolicy.xml)</li><li>[ ] Verified that C# bindings built fine on Windows, partial ...
  • C#跳过Warning编译,提高编译效率

    千次阅读 2012-08-14 16:55:44
    #pragma warning disable //需屏蔽警告的源代码 #pragma warning restore //此方法很好用,缺点就是麻烦了点(可忽略); 2. #pragma warning(disable:4507 34) 此方法不能屏蔽掉没有warning ID的警告, 如...
  • symlink</code> method: https://github.com/ocaml/ocaml/blob/28c337fecbebfc064c06ae0ba35a1107b0b58493/otherlibs/win32unix/symlink.c#L87</p> <p>On Linux/Mac, this always returns true, but on Windows, ...
  • <div><p>The user probably wrote something like <code>C#</code> and isn't aware that he has to escape the <code>#</code></p> <p>Opened via <a href="https://gitter.im/coala/coala/?at=5815f7657...
  • 0 Warning(s) 1 Error(s) Time Elapsed 00:04:36.60 dotnet.exe failed with exit code: 1 At C:\Users\Phillip Carter\.dotnet\buildtools\korebuild\2.1.0-preview1-15576\scripts\common.psm1:11 char:9 +...
  • 0 Warning(s) 0 Error(s) Time Elapsed 00:00:00.80 Microsoft (R) Build Engine version 15.3.409.57025 for .NET Core Copyright (C) Microsoft Corporation. All rights reserved. Build started 9/28/2017 ...
  • <div><p>The objective is to test warning and error conditions that you normally can't using unit tests. <h2>Testing objcgen.exe <p>Currently, we have 2 test templates inside <code>Makefile</code> ...
  • <div><h2>Environment data <p><code>dotnet --info</code> output: ...<p>Soft-aborts with a warning, zero intellisense available</p><p>该提问来源于开源项目:OmniSharp/omnisharp-vscode</p></div>
  • C# 条件编译符号

    2020-03-23 20:52:27
    #define #undef #if #elif #else #endif #error #warning #line #region #endregion #pragma warning disable #pragma warning restore https://blog.csdn.net/sibaison/article/details/71566772 ...
  • This works as expected in 1.8.14 but produces a warning in 1.8.16 for C#. Side note: I cannot find anything in Doxygen's documentation about this feature or must have missed it. <pre><code> /// ...
  • Kudu still cannot build the much more complete F# / C# MVC 4 template currently available on Nuget (see http://visualstudiogallery.msdn.microsoft.com/3d2bf938-fc9e-403c-90b3-8de27dc23095) <p>The ...
  • C#预处理指令列表

    2019-10-03 16:27:14
    #if #else #elif #endif # define ... #warning #error #line #region #endregion #pragma #pragma warning #pragma checksum 转载于:https://www.cnblogs.com/zgra...
  • C# 语言的预处理器指令:#if #else #elif #endif # define #undef #warning #error #line #region #endregion #pragma #pragma warning #pragma checksum
  • 1.#define 和 #undef #define 告诉编译器存在给定名称的符号 #undef 删除富豪的定义 ...用法#warning/#error需要提示的文本 4.#region #endregion 把一段代码标记为有给定名称的一个块 5....
  • 主要介绍了C#中的预处理器指令详解,本文讲解了#define 和 #undef、#if、#elif、#else和#endif、#warning和#error、#region和#endregion、#line、#pragma等预处理器指令,需要的朋友可以参考下
  • Support for F# properties

    2020-12-28 03:24:37
    warning : Fody/RealmWeaver: Dog.Owner is not an automatic property but its type is a RealmObject which normally indicates a relationship. error : Fody/RealmWeaver: Class Dog is a RealmObject but has ...
  • C#预处理指令

    千次阅读 2008-07-17 21:58:00
    C# 语言的预处理器指令: #if #else #elif #endif # define #undef #warning #error #line #region #endregion #pragma #pragma warning #pragma checksum 虽然编译器没有单独的预处理器,但在处理该节中描述的指令...
  • 预处理指令(C#

    2019-10-19 10:23:51
    预处理指令简介 #define、#undef #if、#elif、#else、#endif #warning、#error #region、#endregion #line、#line default #pragma

空空如也

1 2 3 4 5 ... 20
收藏数 988
精华内容 395
关键字:

c##warning

c# 订阅