1

我对 c# 很陌生,这可能是一个非常 n00b 的错误。

对于这个项目,我已经收到了可以使用的现有代码。代码的结构是它有一个以模拟作为支持命名空间的主要解决方案。

我从要修改的模拟命名空间中复制了一个类(Adt_12)并将其重命名(Pb_cs2)。我复制的方式是点击另存为.. 然后将文件名更改为我想要的新名称。然后将公共类名(和构造函数)更改为这个新文件名。我已经重建“模拟”并且重建得很好。

但是当我尝试调用 Pb_cs2 时,它会抛出上面的“找不到名为 Pb_cs2 的类型或命名空间”。

我在 main 的可执行类中使用它的方式;是公共静态 Pb_cs2 pb;(最初使用 Adt_12)。

但它仍然可以在解决方案和命名空间中找到 Adt_12。只是没有 Pb_cs2。我已经重建并构建了解决方案。

.NET 框架的常见错误与此无关。

任何想法为什么会发生这种情况以及如何解决这个问题?我真的不想修改原始文件。

4

3 回答 3

1

这样做是为了确保您的解决方案知道该类。Project->addclass 选择类,如果它现在没有被选中。命名它,然后添加新类。它应该出现在您的解决方案资源管理器中。现在复制粘贴代码。重命名命名空间的类应该没问题。

你应该没问题。

于 2012-08-28T08:55:59.480 回答
1

看看这里。Visual Studio 说名称在当前上下文中不存在

您需要确保:

  1. 您的类名和命名空间不一样,Pb_cs2.Pb_cs2因为这会使编译器感到困惑

  2. 您可以完全限定类的路径,即MyNamespace.MyNestedNameSpace.MyClass

  3. 您可以使用快捷方式,即using MyClass = MyNamespace.MyNestedNamespace.Class1

  4. 确保您的项目针对相同的框架,即 .NET 4.0 / .NET 4.0 客户端配置文件。

  5. 您可能会遇到冲突,您的类与另一个类具有相同的名称,在这种情况下,请使用选项 2,或将您的类重命名为其他名称。

  6. 如果你的类名没有出现在智能感知中,那么它不知道在哪里寻找它。您可以右键单击课程并单击“解决”,这将为您提供一些有关如何使您的课程合格的选项。

......这就是我现在能想到的!......祝你好运!

编辑:

查找 C# 风格约定...那些类名很难看!!!

于 2012-08-28T07:57:14.140 回答
1

添加对包含您正在调用的类的命名空间的引用。所以你可能有类似的东西

namespace SomeNamespace
{
    public class Pb_cs2
    {
    ...
    }
}

所以你需要添加using SomeNamespace;到试图调用你的类的文件顶部的声明中。或使用完全限定名称调用类

SomeNamespace.Pb_cs2 pbcs2 = new SomeNamespace.Pb_cs2();

当您引用它时,您还可以为命名空间创建一个别名

using NS = SomeNamespace;

那么上面的显式引用可以被称为

NS.Pb_cs2 pbcs2 = new NS.Pb_cs2();

我希望这有帮助。

于 2012-08-28T07:58:35.463 回答