C#的预处理指令是一个很好的功能 , 比如你的这个系统可能在Windows , IOS , ANDROID等等上面运行 , 你不会是想要告诉我开发3个甚至更多的系统分别为他们服务吧 ? 实际上, 他们的功能都是一样的 , 只是细微的实现方式不一样 , 想想看 !!!也许你会说 , 做一个全局控制的状态机 , 修改状态来实现控制平台的效果 , 没错 , 这个可以做 , 可以实现 。 但是你把这个系统放在Windows上那么IOS , ANDROID 等功能都在里面只是永远不会执行 , 这不仅导致系统大 , 而且还没必要的消耗了内存。完美的解决方案就是C#的预处理指令 , 先来一段代码 : j_0028.gif


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

namespace Mymc
{
    class Program
    {
        //a ss = new a();
        static void Main(string[] args)
        {
#if (A)
            Console.WriteLine("A");
#elif (B)
    Console.WriteLine("B");
#else
            Console.WriteLine("C");
#endif



#if (WEB_PLAYER)
             Console.WriteLine("这是网页游戏");
#elif (IOS_PLAYER)
             Console.WriteLine("Apple平台");
#elif (ANDROID_PLAYER)
            Console.WriteLine("安卓平台");
#else
            Console.WriteLine("其他平台");
#endif

#if DEBUG
             Console.WriteLine("处于Debug模式");
#endif
            Console.ReadLine();

        }



    }
}

传统的方式是这样的 : 看下面

wKiom1TKH-3gxNYhAACzd2fDzYE534.jpg

用#define但是这个有个缺陷 : 你做的每一个类如果要有区分的话都要加 : #define WEB_PLAYER , 累死你 。我们可以不加这 , 用VS编译的时候加 。 方案如下 :先上图

wKiom1TKIKOi-HdTAAE9RF5Le74479.jpg

在项目上右击->属性 , 在“生成”中可以配置 这些全局的#define , 在C++应该叫宏吧。相当于宏

注意 : Q 和 WEB_PLAYER 中间用; 隔开

看下结果 :

wKioL1TKIiCggJnhAAB_CSJND5Q634.jpg

测过都OK了 j_0063.gif