在类中实例化

时间:2012-02-07 11:46:00

标签: c#

我正在做一些事情,我必须实例化这个类。我的问题是我会在哪里做到这一点?我会在此之前做到这一点:

public partial class Form1 : Form
    {
       InputClass myclass = new InputClass();
        public Form1()
        {
            InitializeComponent();
        }


Or

public partial class Form1 : Form
    {

        public Form1()
        {

        InputClass myclass = new InputClass();

            InitializeComponent();
        }

这是我正在处理的另一个代码,但它没有成功,这就是我的代码现在的样子:

public partial class Form1 : Form
{


    InputClass myClass = new InputClass();
    myClass.yourname = "";
    myClass.Banner = "";

 public Form1()
    {
        InitializeComponent();
    }

我是C#的新手,我正试图解决这个问题。我需要实例化该类。然后当页面加载添加时,从_banner变量设置标签文本。然后添加代码,以便在用户按下按钮时从文本框中的文本设置属性yourname。然后我需要清除文本框。我还必须在班级的消息框中显示名称。

 class InputClass
{
    public string _banner;
    private string _yourName;

    public InputClass(String _banner)
    {
        this._banner = _banner;
    }

    public string yourName
    {
        get { return _yourName; }
        set { _yourName = value; }
    }

}

}

4 个答案:

答案 0 :(得分:5)

如果要从类中的其他方法访问对象,则需要使用成员字段而不是局部变量。

private InputClass myClass = new InputClass { YourName = "", Banner = "" };

public Form1()
{
    InitializeComponent();
}

另一种选择是声明一个成员字段,但在构造函数中初始化它:

private InputClass myClass;

public Form1()
{
    InitializeComponent();
    this.myClass = new InputClass { YourName = "", Banner = "" };
}

这在您的特定情况下并不太有用,但如果您需要将构造函数中的参数传递给InputClass构造函数,则它非常有用。

答案 1 :(得分:1)

您只能在函数体内设置属性!不在课堂上下文。

实例化该类将在Form1()内或在声明时工作。 IMO在你的案例中最好的风格是:

public partial class Form1 : Form
{

    InputClass myclass;
    public Form1()
    {
        InitializeComponent();
        myclass = new InputClass();
    }
}

这使得人们不仅可以在Form1构造函数中使用myClass,还可以在任何其他函数中使用myClass。

答案 2 :(得分:1)

首先,区分声明和实例化。在您的第一个片段中,您在类范围中声明了InputClass成员,这意味着它将由类中的所有方法共享。一旦你这样做,如果你在构造函数中或在声明期间实例化它并不重要,它(主要)可以解决同样的问题。

其次,我猜这是一个ASP.NET项目,因为你引用了“页面加载”。如果是这样,请记住您的Form1实例在页面加载之间不会保持活动状态。每次重新加载页面时,无论是手动使用F5还是通过按钮单击/回发,您都将创建一个新的Form1实例,它将创建一个新的InputClass实例。

答案 3 :(得分:1)

您在第一个示例中所做的是声明Form1的成员变量名为myclass。你可以在同一个地方为它分配一个值,这很好:

public partial class Form1 : Form
{
    InputClass myclass = new InputClass();
    public Form1()
    {
        InitializeComponent();
    }
}

但是你通常不能在类声明中插入实际的代码语句(比如赋值myClass.yourname = "")。您需要将它们放在构造函数中。因此,正确的方法是:

public partial class Form1 : Form
{
    InputClass myClass = new InputClass();

    public Form1()
    {
        myClass.yourname = "";
        myClass.Banner = "";
        InitializeComponent();
    }
}

要点击按钮执行操作,请查看此处:http://msdn.microsoft.com/en-us/library/43sxkdeb(v=vs.80).aspx