如何在 C# 中使用其他文件中的 class 和 visual studio?

How to use class from other files in C# with visual studio?

我是C#和MSvisual studio的新手,我想使用在另一个文件中定义的C#class,但是不能'无法正常工作。

这是 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 还不够吗?


正如有些人问他们是否 在同一个 assembly/same 项目中 ,我 假设 他们是,因为这里是它们的创建过程:

老实说,我不知道他们是否在同一个程序集/同一个项目,但我猜他们是。

根据你在这里的例子,它们似乎都位于同一个命名空间中,我得出结论,它们都是同一个项目的一部分(如果你还没有创建另一个具有相同命名空间的项目) 并且所有 class 默认情况下都被定义为它们所在项目的内部,如果没有另外声明,因此我猜问题是您的文件未包含在您的项目中。您可以通过右键单击解决方案资源管理器中的文件来包含它 window => 包含在项目中,如果您在解决方案资源管理器中看不到项目文件中的文件,则单击解决方案资源管理器的显示上层菜单按钮名为显示所有文件(只需将鼠标光标移到那里的按钮上,您就会看到按钮的名称)

基础知识: 如果文件驻留在不同的项目\程序集中,则必须对其进行定义, 否则它必须至少定义为内部或 public。 如果您的 class 是从那个 class 继承的,它也可以受到保护。

如果我们能看到实际的项目结构,那将对我们更有帮助,因为单独classes并没有说那么多。

假设两个 .cs 文件在同一个项目中(如果它们在同一个解决方案中的不同项目中,则必须添加对包含 Class2.cs 的项目的引用),您可以单击在代码中出现的 Class2 处带有红色下划线,然后按 CTRL + .(句点)或单击蓝色栏那应该在那里。出现的第一个选项将自动添加适当的 using 语句。如果没有这样的菜单,可能说明项目结构有问题或缺少引用。

您可以尝试制作 Class2 public,但听起来这不是问题,因为默认情况下您所做的是 internal class Class2,因此 Class2 如果他们住在同一个 project/assembly,应该可以访问。如果您正在引用包含 Class2 的不同程序集或项目,则必须将其设置为 public 才能访问它,因为 internal classes 不能从他们的程序集外部访问。

关于重命名:您可以在解决方案资源管理器中点击Program.cs,然后按F2重命名。然后它将打开一个对话框 window 询问您 class Program 本身及其所有引用是否也应该重命名,这通常是您想要的。或者您可以在声明中重命名 class Program 并再次打开带有蓝色小条的菜单(或者,再次 CTRL+.) 并执行相同的操作,但它不会相应地自动重命名实际的 文件

在你的问题编辑后编辑:我从来没有使用过你使用的这个选项,但通过快速检查我认为它确实不在同一个项目中。向项目添加新的 classes 时执行以下操作:在解决方案资源管理器中,右键单击您创建的项目,然后 select [添加] -> [Class] 或 [添加] - > [新项目...] 然后 select 'Class'。这将自动使新的 class 成为项目的一部分,从而成为程序集的一部分(程序集基本上是构建项目后的 'end product' )。对我来说,还有快捷方式 Alt+Shift+C 可以创建一个新的 class.

根据您的解释,您没有将 Class2.cs 包含在您的项目中。您刚刚创建了所需的 Class 文件,但尚未将其包含在项目中。

The Class2.cs was created with [File] -> [New] -> [File] -> [C# class] and saved in the same folder where program.cs lives.

执行以下操作来克服这个问题,

只需在您的项目上 Right click 然后 -> [添加] - > [现有项目...] : Select Class2.cs 然后按 OK

问题应该已经解决了。

此外,添加新的 classes 时使用此过程,

Right click 项目 -> [添加] -> Select 必填项(例如 - A class、表格等)

是的,我刚刚犯了同样的 'noob' 错误并找到了这个帖子。 事实上,我已经将 class 添加到解决方案而不是项目中。 所以它看起来像这样:

补充一下希望对大家有帮助

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

在'class Class2'之前添加'Public'声明。

我在这里遇到了同样的问题。发现问题出在文件的 Advanced 属性 上。有一个名称为 'Compilation Action' 的选项(可能不是确切的词,我正在翻译 - 我的 VS 是葡萄牙语)。

我的 Class1.cs 文件是 "Content",我只需要将其更改为 "Compile" 即可使其正常工作,并让其他人识别 类同一项目中的文件。

在您的项目中将有一个扩展名为 .csproj 的文件。

双击它打开Visual Studio中的项目。否则,如果你制作一个新的 class,它不会 link 与其他 classes.

当您申报您的汽车时 你 , 可以使用 private , declarasion

使用系统; 私人 Class class;

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