系统.控制台解析到不正确的名称空间

本文关键字:空间 不正确 控制台 系统 | 更新日期: 2023-09-27 18:13:25

我有一个简单的控制台应用程序,命名空间为

something.service.console

问题是当我尝试使用

Console.WriteLine("something");

我得到编译错误:类型或命名空间名称"WriteLine"在命名空间something.service.console中不存在。

所以除非我使用

System.Console.WriteLine("something");

c#编译器试图将方法WriteLine解析为错误的命名空间("something.service.console")。在这种情况下,可以强制编译器解析控制台。WriteLine到正确的命名空间"System"(而不是重命名我的命名空间:))?

谢谢。

系统.控制台解析到不正确的名称空间

编译器会在找到命名空间System之前找到命名空间something.service,所以它会假设

Console.WriteLine("something");

实际上意味着

something.serviceConsole.WriteLine("something");

,因此你的错误。

两种可能的解决方案是,当您遇到这样的问题时,完全限定名称空间:

System.Console.WriteLine("something");

或更改名称空间的名称,使其不是something.service.console而是something.service.somethinglese

你可以像这样"强制"它:

using SysConsole = System.Console; 

现在,当你使用Console in时,它指的是System.Console

public class Console
{
    private void Test()
    {
        SysConsole.WriteLine("something");
    }
}

注意:使用:System.Console.WriteLine()你应该避免使用。net框架中已经存在的类名。

使用c# 6的一个特性" Using static",你可以将代码更改为,以避免混淆名称Console而不会使代码混乱。

如果代码中出现了大量的System.Console.WriteLine调用,这是有意义的。

using static System.Console;
namespace SomeNamespace.Console
{
    public class SomeClass
    {
        public void SomeMethod()
        {
            WriteLine("abc");
        }
    }
}