C#的预处理指令的全局设计-创新互联
C#的预处理指令是一个很好的功能 , 比如你的这个系统可能在Windows , IOS , ANDROID等等上面运行 , 你不会是想要告诉我开发3个甚至更多的系统分别为他们服务吧 ? 实际上, 他们的功能都是一样的 , 只是细微的实现方式不一样 , 想想看 !!!也许你会说 , 做一个全局控制的状态机 , 修改状态来实现控制平台的效果 , 没错 , 这个可以做 , 可以实现 。 但是你把这个系统放在Windows上那么IOS , ANDROID 等功能都在里面只是永远不会执行 , 这不仅导致系统大 , 而且还没必要的消耗了内存。完美的解决方案就是C#的预处理指令 , 先来一段代码 :
成都创新互联长期为成百上千客户提供的网站建设服务,团队从业经验10年,关注不同地域、不同群体,并针对不同对象提供差异化的产品和服务;打造开放共赢平台,与合作伙伴共同营造健康的互联网生态环境。为鲁山企业提供专业的网站制作、成都做网站,鲁山网站改版等技术服务。拥有10年丰富建站经验和众多成功案例,为您定制开发。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(); } } }
传统的方式是这样的 : 看下面
用#define但是这个有个缺陷 : 你做的每一个类如果要有区分的话都要加 : #define WEB_PLAYER , 累死你 。我们可以不加这 , 用VS编译的时候加 。 方案如下 :先上图
在项目上右击->属性 , 在“生成”中可以配置 这些全局的#define , 在C++应该叫宏吧。相当于宏
注意 : Q 和 WEB_PLAYER 中间用; 隔开
看下结果 :
测过都OK了
附件:http://down.51cto.com/data/2365375另外有需要云服务器可以了解下创新互联scvps.cn,海内外云服务器15元起步,三天无理由+7*72小时售后在线,公司持有idc许可证,提供“云服务器、裸金属服务器、高防服务器、香港服务器、美国服务器、虚拟主机、免备案服务器”等云主机租用服务以及企业上云的综合解决方案,具有“安全稳定、简单易用、服务可用性高、性价比高”等特点与优势,专为企业上云打造定制,能够满足用户丰富、多元化的应用场景需求。
本文题目:C#的预处理指令的全局设计-创新互联
分享URL:http://cdiso.cn/article/dcdcep.html