使用另一个类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);

【讨论】:

我明白你的意思,你的解决方案是正确的,但如果sonepSession.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#中的类的主要内容,如果未能解决你的问题,请参考以下文章

如何使静态类中的所有方法在c#中的另一个静态类中可用

如何在C#中,在一个类里调用另外一个类的方法

C# Specflow:如何在另一个文件夹的类中调用具有动态表作为参数的方法

C ++:如何访问另一个类中的类函数?

使用另一个类c#中的类

C# 如果我需要另一个类中的位图,请使用 Dispose()