如何在 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 项目中 ,我 假设 他们是,因为这里是它们的创建过程:
- 使用Console C# Project模板的新项目,然后默认创建
program.cs
。
- Class2.cs 是使用 [文件] -> [新建] -> [文件] -> [C# class] 创建的,并保存在
program.cs
所在的同一文件夹中.
老实说,我不知道他们是否在同一个程序集/同一个项目,但我猜他们是。
根据你在这里的例子,它们似乎都位于同一个命名空间中,我得出结论,它们都是同一个项目的一部分(如果你还没有创建另一个具有相同命名空间的项目)
并且所有 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 旁边,就是这样。
我是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 项目中 ,我 假设 他们是,因为这里是它们的创建过程:
- 使用Console C# Project模板的新项目,然后默认创建
program.cs
。 - Class2.cs 是使用 [文件] -> [新建] -> [文件] -> [C# class] 创建的,并保存在
program.cs
所在的同一文件夹中.
老实说,我不知道他们是否在同一个程序集/同一个项目,但我猜他们是。
根据你在这里的例子,它们似乎都位于同一个命名空间中,我得出结论,它们都是同一个项目的一部分(如果你还没有创建另一个具有相同命名空间的项目) 并且所有 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 旁边,就是这样。