nameof 不会反映使用
nameof won´t reflect using
我的源代码文件中有这样一个别名:
MyClass.cs
using System;
using SomeClass = NewClass;
public class Program
{
public static void Main()
{
Console.WriteLine(nameof(SomeClass));
}
}
public class NewClass { }
我需要这个,因为我的 classes 的名称发生了变化,现在我需要同时编译旧的和新的 class-结构。
当我 运行 该代码时,我得到 "SomeClass"
但我期望 "NewClass"
。为什么 nameof
在这种情况下不使用 using
指令反映别名?
这是因为 nameof
关键字旨在“获取标识符的名称”,而不评估其值或其他任何内容,如文档中所述:
A nameof expression is evaluated at compile time and has no effect at run time.
更多信息here
您的具体问题是“为什么不呢?”但是,这里有一个“有什么可以代替呢?”为您解答:)
使用 typeof
而不是 nameof
。
using System;
using SomeClass = NewClass;
public class Program
{
public static void Main()
{
Console.WriteLine(typeof(SomeClass));
}
}
public class NewClass { }
打印
NewClass
我的源代码文件中有这样一个别名:
MyClass.cs
using System;
using SomeClass = NewClass;
public class Program
{
public static void Main()
{
Console.WriteLine(nameof(SomeClass));
}
}
public class NewClass { }
我需要这个,因为我的 classes 的名称发生了变化,现在我需要同时编译旧的和新的 class-结构。
当我 运行 该代码时,我得到 "SomeClass"
但我期望 "NewClass"
。为什么 nameof
在这种情况下不使用 using
指令反映别名?
这是因为 nameof
关键字旨在“获取标识符的名称”,而不评估其值或其他任何内容,如文档中所述:
A nameof expression is evaluated at compile time and has no effect at run time.
更多信息here
您的具体问题是“为什么不呢?”但是,这里有一个“有什么可以代替呢?”为您解答:)
使用 typeof
而不是 nameof
。
using System;
using SomeClass = NewClass;
public class Program
{
public static void Main()
{
Console.WriteLine(typeof(SomeClass));
}
}
public class NewClass { }
打印
NewClass