使用另一个类c#中的类
Posted
技术标签:
【中文标题】使用另一个类c#中的类【英文标题】:using class from another class c# 【发布时间】:2017-11-16 17:30:24 【问题描述】:我在 form1.cs 上的 c# 代码有问题:
using sonep = session.Broker;
using maind = ClassLibrary1.Personn;
sonep boi = new sonep();
public partial class Form1 : Form
public Form1()
InitializeComponent();
private void Form1_Load(object sender, EventArgs e)
maind p = new maind();
p.Nom = txtnom.Text;
p.Prenom = txtprenom.Text;
boi.Insert(p);
我找到了这个,但没有帮助我:
https://docs.microsoft.com/fr-fr/dotnet/csharp/language-reference/keywords/using-directive
【问题讨论】:
问题出在“boi”上 那么,问题出在哪里?你有错误吗? 如果boi
是一个变量,它不能被声明在一个类或方法的范围之外。
我实际上不能使用:using session;
,所以我尝试使用using sonep = session.Broker;
,但是当我尝试使用boi.Insert(p);
时它不起作用
@sok 为什么你不能使用using session
?这应该是有效的 C#,前提是您的命名空间实际上称为 session
(命名空间区分大小写)
【参考方案1】:
您不能像以前那样将sonep boi = new sonep();
放在类范围之外的任何地方。您正在尝试创建一个名为 sonep
的类型为 boi
的对象。
应该是这样的:
private void Form1_Load(object sender, EventArgs e)
maind p = new maind();
p.Nom = txtnom.Text;
p.Prenom = txtprenom.Text;
sonep boi = new sonep();
boi.Insert(p);
【讨论】:
哦,好吧!谢谢! @sok 没问题,我很高兴它现在对你有用【参考方案2】:文件顶部的代码:
using sonep = session.Broker;
using maind = ClassLibrary1.Personn;
sonep boi = new sonep();
有一些问题。类范围之外的空间是您将定义using
指令作为“导入”要在此类中使用的命名空间的一种方式。您永远不会实例化类范围之外的类。通常,using
指令会采用以下两种方式之一:
using sonep = session.Broker; //this creates an alias for the namespace
using ClassLibrary1.Personn; //This just imports the namespace as is
稍后,在您的类范围内是您想要实例化类实例的地方:
private void Form1_Load(object sender, EventArgs e)
sonep boi = new sonep(); //Instantiate like this
maind p = new maind(); //You already Instantiate an object here
p.Nom = txtnom.Text;
p.Prenom = txtprenom.Text;
boi.Insert(p);
【讨论】:
我明白你的意思,你的解决方案是正确的,但如果sonep
是Session.Broker
命名空间中的一个类,你确实可以这样做using sonep = Session.Broker;
使用 sonep = session.Broker 创建一个别名。有关详细信息,请参阅此docs.microsoft.com/en-us/dotnet/csharp/language-reference/…
@Gareth 谢谢你,这正是我想说的
抱歉,我知道这一点,但我对其他问题有点盲目,只是掩饰了它。我已经编辑了我的帖子。【参考方案3】:
这个
sonep boi = new sonep();
建议您尝试创建sonep
类型的新对象。另一个例子是
MyObject myObj = new MyObject();
但这可以是任何东西;例如,如果您有一个采用直径和颜色的 Apple 对象,您可以像这样实例化它
Apple myApple = new Apple(5, "red");
然而
using sonep = session.Broker;
建议您尝试使用 using 指令创建别名。例如,
using Project = MyNamespace.MyCompany.Project;
如果你的名字很长,这个技巧很有用,因为你可以这样做
Project.MyClass mc = new Project.MyClass();
而不是必须这样做
MyNamespace.MyCompany.Project.MyClass mc = new MyNamespace.MyCompany.Project.MyClass();
如果你试图实例化一个sonep
类型的新对象,你必须在你的类中这样做。例如,
private void Form1_Load(object sender, EventArgs e)
sonep boi = new sonep();
...
或者,如果您尝试为命名空间创建别名,则无法实例化它。
【讨论】:
以上是关于使用另一个类c#中的类的主要内容,如果未能解决你的问题,请参考以下文章