如何在Visual Studio中使用C#中其他文件中的类?

kcwpcxri  于 2023-03-03  发布在  C#
关注(0)|答案(9)|浏览(395)

我是一个C#和 MS Visual Studio 的新手,我想使用在另一个文件中定义的C#类,但无法使其工作。
下面是program.cs(为什么我不能重命名该文件?)

using System;

namespace TestCSharp2
{
    class Program
    {
        static void Main(string[] args)
        {
            Class2 class2 = new Class2();
            // here the IDE will complain that cant find namespace or balabala..
            class2.setValue(10);
            Console.WriteLine(class2.getValue().ToString());
            Console.ReadKey();
        }
    }
}

下面是我想在Class2.cs文件中使用的Class2

namespace TestCSharp2
{
    class Class2
    {
        int i;
        public void setValue(int i)
        {
            this.i = i;
        }
        public int getValue()
        {
            return this.i;
        }
    }
}

我应该#include还是什么?use namespace还不够吗?

当一些人问他们是否 * 在同一个程序集/同一个项目中 * 时,我假设他们是,因为下面是创建他们的过程:

  • 使用 Console C# Project 模板创建新项目,则默认情况下创建program.cs
  • Class2.cs是使用[文件] -〉[新建] -〉[文件] -〉[C#类]创建的,并保存在program.cs所在的同一文件夹中。

老实说,我不知道他们是否在 * 同一个组件 * / * 同一个项目 *,但我猜他们是。

kwvwclae

kwvwclae1#

根据您的解释,您还没有将Class2.cs包含在项目中。您刚刚创建了所需的Class文件,但还没有将其包含在项目中。
Class2.cs是使用[File] -〉[New] -〉[File] -〉[C# class]创建的,并保存在program.cs所在的同一文件夹中。
请执行以下操作来克服此问题,
只需在您的项目上Right click,然后-〉[添加] -〉[现有项目...]:选择Class2.cs并按OK
问题现在应该解决了。
此外,当使用此过程添加新类时,
项目上的Right click-〉[添加] -〉选择所需项目(例如A类、表单等)

tvmytwxo

tvmytwxo2#

是的,我刚刚犯了同样的“noob”错误,发现了这个线程。事实上,我已经将类添加到了解决方案中,而不是项目中。所以它看起来像这样:

只是加上这个希望能对别人有所帮助。

htzpubme

htzpubme3#

如果我们能看到实际的 * 项目结构 *,这将对我们更有好处,因为类本身并没有说那么多。
假设两个.cs文件位于同一项目中(如果它们位于同一解决方案的不同项目中,则必须添加对包含Class2.cs的项目的引用),您可以单击代码中带红色下划线的Class2,然后按CTRL +。(句号),或者单击应该出现的蓝条。出现的第一个选项将自动添加相应的using语句。如果没有这样的菜单,则它可能指示项目结构有问题或缺少引用。
您可以尝试将Class2设置为public,但听起来这在这里不成问题,因为默认情况下您所做的是internal class Class2,因此如果Class2internal class Class2位于同一个项目/程序集中,则Class2应该是可访问的。如果您引用的是包含Class2的不同程序集或项目,则必须将其设置为public才能访问它。因为internal类不能从其程序集外部访问。
关于重命名:您可以在解决方案资源管理器中单击Program.cs并按F2对其进行重命名。然后,它将打开一个对话框窗口,询问您是否也应该重命名类Program本身及其所有引用,这通常是您所希望的。或者,您可以只在声明中重命名类Program,然后再次打开带有蓝色小条的菜单(或者,再一次,CTRL+.)并执行相同的操作,但是它不会自动相应地重命名实际的 file

**在问题编辑后编辑:**我从来没有用过你用过的这个选项,但是通过快速检查,我认为它确实不在同一个项目中。在向项目添加新类时,请执行以下操作:在解决方案资源管理器中,右键单击您创建的项目并选择[Add] -〉[Class]或[Add] -〉[New Item...],然后选择“Class”。这将自动使新类成为项目的一部分,从而成为程序集的一部分(程序集基本上是构建项目后的“最终产品”)。对我来说,创建新类也有Alt+Shift+C的快捷方式。

e4yzc0pl

e4yzc0pl4#

namespace TestCSharp2
{
    **public** class Class2
    {
        int i;
        public void setValue(int i)
        {
            this.i = i;
        }
        public int getValue()
        {
        return this.i;
        }
    }
}

在“class Class2”之前添加“Public”声明。

vmdwslir

vmdwslir5#

根据你的例子,它们似乎都位于相同的命名空间中。我的结论是,它们都是同一个项目的一部分(如果你没有用相同的命名空间创建另一个项目),并且所有的类默认情况下都被定义为它们所定义的项目的内部,如果没有声明的话,因此我猜问题是你的文件没有包含在你的项目中。
您可以通过在解决方案资源管理器窗口中右键单击该文件来包含它=〉Include in project,如果您无法在解决方案资源管理器中的项目文件中看到该文件,请单击解决方案资源管理器的显示上层菜单按钮show all files(只需将鼠标光标悬停在该按钮上,您就会看到按钮的名称)。

只是为了了解基本知识:

如果文件驻留在不同的项目\程序集中,则必须对其进行定义,否则必须至少将其定义为内部或公共文件。
如果你的类是从那个类继承的,那么它也可以被保护。

uqzxnwby

uqzxnwby6#

我在这里也遇到了同样的问题。发现问题出在文件的高级属性上。有一个名为“编译操作”的选项(可能不是确切的单词,我正在翻译-我的VS是葡萄牙语)。
我的Class1.cs文件在那里作为“内容”,我只需要将其更改为“编译”,使其工作,并使类被同一项目中的其他文件识别。

rekjcdws

rekjcdws7#

只需在两个不同的文件中创建两个项目,然后将其中一个文件的“Program.cs”重命名并复制,然后将其粘贴到另一个文件的Program.cs旁边,就这样。

dzhpxtsq

dzhpxtsq8#

在您的项目中将有一个扩展名为.csproj的文件。
双击它,在Visual Studio中打开该项目。否则,如果创建一个新类,它将不会与其他类链接。

ldioqlga

ldioqlga9#

当你声明你的,变量你,可以用private,declaration
使用系统;私有Class类;

相关问题