在类中实例化

本文关键字:实例化 | 更新日期: 2023-09-27 18:22:46

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

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; }
    }
}

}

在类中实例化

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

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

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

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

这在您的特定情况下并不太有用,但如果您需要将参数从构造函数传递到InputClass构造函数,它可能会很有用。

只能在函数体内部设置属性!不在类上下文中。

实例化类将在Form1()内部或在声明时工作。IMO在您的情况下最好的风格是:

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

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

首先,区分声明和实例化。在第一个代码段中,您在类作用域中声明InputClass成员,这意味着它将由类中的所有方法共享。一旦你做到了这一点,无论你是在构造函数中还是在声明过程中实例化它,它(大部分)都是一样的。

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

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

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