使用#if检查时,未定义的变量是否应该抛出异常?

Nee*_*ati 1 c#

using System;
public class Program
{
    public static void Main(string[] args)
    {
    #if (!pi)
                Console.WriteLine("i");
    #else 
                Console.WriteLine("PI undefined");
    #endif
        Console.WriteLine("ok");
        Console.ReadLine();
    }
}
Run Code Online (Sandbox Code Playgroud)

输出:


还好

任何人都可以向我解释如何?如果pi没有定义,它不应该抛出异常吗?

Ahm*_*eed 5

#If指令专门检查是否定义了给定的符号.

来自文档:

当C#编译器遇到一个#if指令,最后是一个#endif指令时,只有在定义了指定的符号时,它才会编译指令之间的代码.与C和C++不同,您无法为符号指定数值.C#中的#if语句是布尔值,仅测试符号是否已定义.

此外:

#define让你定义一个符号.然后使用符号作为传递给#if指令的表达式,表达式求值为true.

因此,如果pi尚未定义符号(在您的情况下),则结果始终为false.