5

我的源代码文件中有一个别名,如下所示:

我的类.cs

using System;               
using SomeClass = NewClass;
    
public class Program
{
    public static void Main()
    {
        Console.WriteLine(nameof(SomeClass));
    }
}
public class NewClass { }

我需要这个,因为我的类的名称发生了变化,现在我需要同时为旧的和新的类结构进行编译。

当我运行该代码时,我得到了"SomeClass"但我期望的"NewClass"。在这种情况下,为什么不nameof使用 -directive 反映别名using

4

2 回答 2

3

这是因为该nameof关键字旨在“获取标识符的名称”,而不评估其值或其他任何内容,如文档中所述:

nameof 表达式在编译时计算,在运行时无效。

更多信息在这里

于 2021-02-05T13:53:21.663 回答
0

您的具体问题是“为什么不呢?” 但是,这里有一个“什么可以代替它?” 为你解答:)

使用typeof而不是nameof.

using System;               
using SomeClass = NewClass;
    
public class Program
{
    public static void Main()
    {
        Console.WriteLine(typeof(SomeClass));
    }   
}

public class NewClass { }

印刷

NewClass
于 2021-02-05T14:24:03.140 回答