系统.控制台解析到不正确的名称空间
本文关键字:空间 不正确 控制台 系统 | 更新日期: 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");
}
}
}