當我創建一個新的Windows窗體應用程序,它產生的Program.cs這個一行的文件:在C#中的Visual Studio實例Form1中
Application.Run(new Form1());
我的問題是Form1中是如何實例化適當的形式應是這樣的:
Form1 myForm = new Form1();
又如何能爲Form1 myForm
部分工作似乎缺少。
當我創建一個新的Windows窗體應用程序,它產生的Program.cs這個一行的文件:在C#中的Visual Studio實例Form1中
Application.Run(new Form1());
我的問題是Form1中是如何實例化適當的形式應是這樣的:
Form1 myForm = new Form1();
又如何能爲Form1 myForm
部分工作似乎缺少。
的對象實例化的左手側只是聲明變量,將持有的實例。在你提到的情況下,沒有必要捕捉到一個變量中的對象 - 新創建的基準獲得通過直接進入Application.Run
。
這是怎樣的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
但我傾向於遠離這些東西遠不如說是很少適當
考慮到Application.Run()
的聲明可能看起來是這樣的:
public void Run(Form formParameter)
{
this._form = formParameter;
//lots of other stuff
}
所以你看,new Form1()
的值將被分配到Run
的formParameter
。 你的直覺部分正確,但誤導。 有很多情況下,如果不將對象分配給變量,實例化/構造對象是有用的。考慮構造一個對象並調用它的方法之一,在一行new Object().Method()
。