Tom*_*Tom 0 c# namespaces visual-studio
首先,这是不一样的这个确切的话题很多高upvoted问题,除非我失去了其中的一个.所有这些都指出问题是我有一个与类同名的命名空间.这是不是的情况下(但它).
我开始创建一个名为的新控制台应用程序BatchResizer并在其中放置几个类,但后来决定将其移动到一个名为库的类库中BatchResizer.Components; 然后我将原始控制台应用程序重命名为BatchResizer.ConsoleRunner,将该项目中的所有类更改为namespace BatchResizer.ConsoleRunner.[...],将程序集名称和默认名称空间设置为相同.
有一个标题为类的类,但项目BatchResizer中没有命名空间[...].BatchResizer,但是当我这样做时,var batchResizer = new BatchResizer()我得到的错误是命名空间被用作类.有是命名为喜欢的项目BatchResizer.ConsoleRunner.[...]或BatchResizer.Components.[...],但在没有结束BatchResizer.
我试过"清理"并重新制作项目,删除.suo文件,删除/bin解决方案中所有项目的文件夹,并且我已经浏览了所有相关项目中的每个类的命名空间冲突.
Cha*_*ger 12
BatchResizer但仍然是命名空间名称.如果它也是一个类的名称,你必须更明确:
var batchResizer = new Components.BatchResizer();
Run Code Online (Sandbox Code Playgroud)
您还可以在命名空间中添加using语句:
namespace BatchResizer.ConsoleRunner
{
using Components;
internal class Program
{
private static void Main(string[] args)
{
var batchResizer = new BatchResizer();
}
}
}
Run Code Online (Sandbox Code Playgroud)
如果你想变得有点怪异,那么C#5.0规范就是这样说的:
9.2命名空间声明
...命名空间声明的限定标识符可以是单个标识符或由"."标记分隔的标识符序列.后一种形式允许程序定义嵌套的命名空间,而不用词法嵌套多个命名空间声明.例如,
namespace N1.N2
{
class A {}
class B {}
}
Run Code Online (Sandbox Code Playgroud)
在语义上等同于
namespace N1
{
namespace N2
{
class A {}
class B {}
}
}
Run Code Online (Sandbox Code Playgroud)
因此,即使如你所说,class在名称空间中声明no BatchResizer,BatchResizer 也会被声明为名称空间.
| 归档时间: |
|
| 查看次数: |
5648 次 |
| 最近记录: |