2010-06-02 44 views
0

如何在另一个功能中使用对象?使用多功能对象

main() 
{ 
    private void button1_click { 

    MyClass object = new MyClass(); 
    object.blabla(); 

    } 

    private void button2_click { 

    // how can i use object from button1_click ?? 

    } 
} 

回答

0

使object成为定义函数的类的成员变量。

main() 
{ 
    private MyClass object; 

    private void button1_click { 

    object = new MyClass(); 
+1

基本上答案,所以我不想复制,但你可能想详细说明......? – 2010-06-02 12:45:34

4

通过将对象存储在函数的作用域之外。

main() 
{ 
    MyClass obj; 

    private void button1_click 
    { 
    obj = new MyClass(); 
    obj.blabla(); 
    } 

    private void button2_click 
    { 
    //maybe check for null etc 
    obj.dosomethingelse(); 
    } 
} 
+3

这是正确的 - 但请记住,如果您在其中一个方法中初始化新的MyClass,那么您将必须检查它是否已在使用它的其他方法中进行了初始化。 在构造函数中初始化MyClass对象可能会更好,您可以确信它始终为非null。 (假设这是可能的。)您也可以考虑为它创建一个属性,并在使用它时进行延迟加载。 – 2010-06-02 12:49:02

1

基本上这是一个更基本的问题,这是可以解决的如

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

您也可以选择延迟加载作为一个选项(由安德鲁·安德森提到的)

+0

+1对于实际使用正确的语法,而不是试图声明一个名为“对象”的变量... – 2010-06-02 12:49:04

+0

:)你可以,但它应该宁愿陈述'@ object' – 2010-06-02 12:52:48