如何在另一个功能中使用对象?使用多功能对象
main()
{
private void button1_click {
MyClass object = new MyClass();
object.blabla();
}
private void button2_click {
// how can i use object from button1_click ??
}
}
如何在另一个功能中使用对象?使用多功能对象
main()
{
private void button1_click {
MyClass object = new MyClass();
object.blabla();
}
private void button2_click {
// how can i use object from button1_click ??
}
}
使object
成为定义函数的类的成员变量。
main()
{
private MyClass object;
private void button1_click {
object = new MyClass();
通过将对象存储在函数的作用域之外。
main()
{
MyClass obj;
private void button1_click
{
obj = new MyClass();
obj.blabla();
}
private void button2_click
{
//maybe check for null etc
obj.dosomethingelse();
}
}
这是正确的 - 但请记住,如果您在其中一个方法中初始化新的MyClass,那么您将必须检查它是否已在使用它的其他方法中进行了初始化。 在构造函数中初始化MyClass对象可能会更好,您可以确信它始终为非null。 (假设这是可能的。)您也可以考虑为它创建一个属性,并在使用它时进行延迟加载。 – 2010-06-02 12:49:02
基本上这是一个更基本的问题,这是可以解决的如
class program
{
void Main(string[] args)
{
private MyClass FooInstance;
private void button1_click()
{
// TODO be defensive: check if this.FooInstance is assigned before, to not override it!
this.FooInstance = new MyClass();
this.FooInstance.blablabla();
}
private void button2_click()
{
// TODO add some null check aka make sure, that button1_click() happened before and this.FooInstance is assigned
this.FooInstance = ....;
}
}
}
您也可以选择延迟加载作为一个选项(由安德鲁·安德森提到的)
+1对于实际使用正确的语法,而不是试图声明一个名为“对象”的变量... – 2010-06-02 12:49:04
:)你可以,但它应该宁愿陈述'@ object' – 2010-06-02 12:52:48
基本上答案,所以我不想复制,但你可能想详细说明......? – 2010-06-02 12:45:34