最近看朋友用Visual Studio,發現了一個有趣的東西,那就是他在Code裡面埋了#if這類的敘述如下…( 好啦,小弟知識淺薄… )
using System; using System.Collections.Generic; using System.Linq; using System.Web; using System.Web.Mvc; namespace MvcApplication1.Controllers { public class HomeController : Controller { // // GET: /Home/ public ActionResult Index() { #if Test1 return Content("1"); #else return Content("2"); #endif } } }
其實這個東西叫做C# 前置處理器指示詞( 官方是這樣稱呼的… ),這個用途其實滿有趣的,它可以讓編譯器,依據你的設定,來決定,當下要編譯那些東西。
以上面的Code為例,大家應該就很清楚,猜也可以猜得出來,就是當為Test1時,就會編譯return Content(“1”) ( 歹勢,這邊用ASP.NET MVC為範例~ ),如果不是Test1的話,那就會編譯成return Content(“2”)。
那Test1又代表甚麼呢??,大家其實可以從專案總管的這邊看到有一個"條件式編譯的符號",而這邊,就是可以填入我們在Code那邊設定的值。
所以如果是上面的ASP.NET MVC程式碼,我們再在專案這邊設定好後,如上圖,那我們執行出來的結果就會如下圖。而不是retunr Content(“2”)。
通常這個功能,會常用在Debug的設定、或是某些情況下的切換,老實說,小弟以前真的還沒碰過,所以這邊野人獻曝一下XDD,也順便紀錄一下,讓自己加深印象=V=
最後,如果有興趣的人,MSDN那邊也提供了更多的寫法可以給大家參考喔!!
( 好啦,我就是菜…完全沒發現已經快要十年前的東西- - )