iT邦幫忙

第 11 屆 iThome 鐵人賽

DAY 29
0
自我挑戰組

初心者學C#系列 第 29

Day 29:C#的前置處理導引.*⌒☆━━―⊂(ಠ_ಠ∩)

  • 分享至 

  • xImage
  •  

※以下內容皆是新手撰寫,內容可能不完全正確

30天可愛顏文字挑戰倒數一天即將結束XDDD
筆記寫到哪算哪,一切隨緣,畢竟30天內完全摸透不太容易

今天的主題是C#的 前置處理導引(preprocessor directives) ,在解釋今天的主題能幹嘛之前,先說它是什麼東西。前置處理導引是編譯器(compiler)進行編譯前先經過處理的一堆敘述(statements),是餵給編譯器的指令(會影響編譯過程)。
這些指令告訴編譯器如何處理特定的錯誤和警告,以及程式碼有哪些段落該編譯。
C#的編譯器並未另分前置處理部分,但該處理的都有處理到。

※一個空白行中,前置處理導引必須是唯一的指令

所有的前置處理導引都以井字號(#)起頭(好像社群媒體裡面的hashtag…),一行當中,井字號前面只可能多出空白,而前置處理導引不是敘述,不必以(;)結尾。
以下是C#中的前置處理導引:

  • #if:檢查某前置處理表式是否屬實
  • #elif:跟#if一併使用,檢查多個前置處理表式
  • #else:跟#if一並使用,造出複合條件導引(compound conditional directive)
  • #endif:跟#if一並使用,用來標示條件導引結尾處
  • #define:用來定義某符號
  • #undef:用來解除某符號的定義
  • #warning:讓使用者從程式碼產生一級warning
  • #error:讓使用者從程式碼產生error
  • #line:讓使用者更動變異器某行的號碼和檔名以便顯示錯誤及警告
  • #region:用Visual Studio編輯程式碼時挑出一段可以展開或隱縮的區域
  • #endregion:標示區域結尾處
  • #pragma:給編譯器自己所在檔案壓縮的特殊指令

#define的小練習:
#define ASYMBOL

using System;
namespace CubeApplication
{
    class Tester
    {
        static void Main(string[] args)
        {
#if (ASYMBOL)
            Console.WriteLine("Defined.");
#else
            Console.WriteLine("Undefined.");
#endif
        }
    }
 }

執行後輸出以下:

Defined.

#if前置處理也可以用運算子符號做成 條件導引(conditional directives) ,以下為可用運算符號:

  • ==(等於)
  • !=(不等於)
  • &&(且)
  • ||(或)

今天就醬 ˊˇˋ 下一篇是最後一篇了~稍微猶豫了一下最後一篇要寫啥,敬請期待

參考資料:
(a) Tutorialspoint; C# - Preprocessor Directives
https://www.tutorialspoint.com/csharp/csharp_preprocessor_directives.htm
(b) Programiz; C# Preprocessor directives
https://www.programiz.com/csharp-programming/preprocessor-directives


上一篇
Day 28:C#的名稱空間 (♡´❍`♡)*✧ ✰ 。*
下一篇
Day 30:C#的異常處置 ♡〜٩( ╹▿╹ )۶〜♡
系列文
初心者學C#30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言