我在源代码文件中有一个这样的别名:
MyClass.cs
using System;
using SomeClass = NewClass;
public class Program
{
public static void Main()
{
Console.WriteLine(nameof(SomeClass));
}
}
public class NewClass { }
我需要这个,因为我的类名改变了,现在我需要同时编译旧的和新的类结构。
当我运行代码时,我得到"SomeClass"
,但我期望"NewClass"
。为什么nameof
不反映别名使用using
指令在这种情况下?
这是因为nameof
关键字意味着"获取标识符的名称",而不计算其值或其他任何东西,就像在docs中所说的:
nameof表达式在编译时求值,在运行时没有影响。
更多信息在这里
你的具体问题是"为什么不呢?"但是,这里有一个"用什么来代替呢?"为你解答:)
用typeof
代替nameof
。
using System;
using SomeClass = NewClass;
public class Program
{
public static void Main()
{
Console.WriteLine(typeof(SomeClass));
}
}
public class NewClass { }
打印
NewClass