2013-04-12 33 views
0

當我創建一個新的Windows窗體應用程序,它產生的Program.cs這個一行的文件:在C#中的Visual Studio實例Form1中

Application.Run(new Form1()); 

我的問題是Form1中是如何實例化適當的形式應是這樣的:

Form1 myForm = new Form1(); 

又如何能爲Form1 myForm部分工作似乎缺少。

回答

2

的對象實例化的左手側只是聲明變量,將持有的實例。在你提到的情況下,沒有必要捕捉到一個變量中的對象 - 新創建的基準獲得通過直接進入Application.Run

2

這是怎樣的C#語言的作品。

Form1 myForm部分剛剛創建,您可以使用引用類的一個實例變量。

new Form1();部分是創建實例位。這是Application.Run()函數關心的實例。


現在,通常沒有參考地創建一個實例是毫無意義的,因爲您將無法使用它。但也有一些例外。在這種情況下,該實例被分配給Application.Run()方法中的參數。 (所以在技術上有對它的引用)

例如:

public void Run(Form form) 
{ 
    //can use form parameter here 
} 

//inside some other function 
Run(new Form1()); 

這就好比是這樣做的:

Form form = new Form1(); 

Run()方法然後可以使用該實例,因爲它需要。


不需要保持一個參考的另一個例子是一次性的方法調用,這樣的:

new Form1().DoSomething(); 
//here we no longer have access to the instance 

但我傾向於遠離這些東西遠不如說是很少適當

0

考慮到Application.Run()的聲明可能看起來是這樣的:

public void Run(Form formParameter) 
{ 
    this._form = formParameter; 
    //lots of other stuff 
} 

所以你看,new Form1()的值將被分配到RunformParameter。 你的直覺部分正確,但誤導。 有很多情況下,如果不將對象分配給變量,實例化/構造對象是有用的。考慮構造一個對象並調用它的方法之一,在一行new Object().Method()

相關問題