C# 预处理命令

概念:指令指导编译器在实际编译开始之前对信息进行预处理。

1.#if、#elif、#else、#endif


 

#define Edition_1_1//它用于定义一系列成为符号的字符。

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace ConsoleApp1
{
    class Program
    {
        static void Main(string[] args)
        {
#if (Edition_1_1)//    它用于测试符号是否为真。

            Console.WriteLine("是我版本1_1");
#else//    它用于创建复合条件指令,与 #if 一起使用。
             Console.WriteLine("我是其他的版本,不执行!");
#endif//指定一个条件指令的结束。
            Console.ReadKey();
        }
    }
}

 

输出:是我版本1_1

优点:当我们代码有多个版本,其它版本的代码不想注释,有可能又要重用,#define Edition_1_1 就可以改变值,运行其他版本,例如:#define Edition_1_2  改成版本1_2,上面输出的是:Console.WriteLine("我是其他的版本,不执行!");

2.#warning、#error


#define Bug

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace ConsoleApp1
{
    class Program
    {
        static void Main(string[] args)
        {
#if Bug 
#error "我这段代码写的有bug,注意一下!"  
#endif

#warning "这个文件,方法有多个地方在重用,改的时候请注意一下!"  
            Console.ReadKey();
        }
    }
}

 生成结果:

优点:在我们实际的项目中,一个解决方案存在多个人去修改,我们加一些告警和错误,可以提醒下一个同事,有哪些地点需要注意!

3.#region 和#endregion

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace ConsoleApp1
{
    class Program
    {
        static void Main(string[] args)
        {
            #region 床位费
            Console.WriteLine($"我的床位是:50元");
            #endregion

            #region 餐费
            Console.WriteLine($"我的餐费是:100元");
            #endregion

            #region 护理费
            Console.WriteLine($"我的护理费是:150元");
            #endregion
            Console.ReadKey();

        }
    }
}

 代码折叠效果:

优点:可以把一些业务相同的代码,折叠放在一起,提高了代码的可阅读性。

4.#line


using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace ConsoleApp1
{
    class Program
    {
        static void Main(string[] args)
        {
#line 1 "我在Program.cs" 
            try // 行1
            {// 行2
                int i = int.Parse("模拟报错!");// 行3
                Console.WriteLine("我运行了!");// 行4
            }
            catch(Exception ex)
            {
                Console.WriteLine("错误!"+ex.ToString());
            }

#line default // 恢复默认行号
            Console.ReadKey();

        }
    }
}

  输出:

 

 

 

 

posted @ 2020-05-14 13:27  朱志  阅读(236)  评论(0编辑  收藏  举报