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