我正在做一些事情,我必须实例化这个类。我的问题是我会在哪里做到这一点?我会在此之前做到这一点:
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; }
}
}
}
答案 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