簡體   English   中英

c#type = new type()是什么意思?

[英]c# what's the point of type = new type()?

鑒於:

myObject hello = new myObject();

在代碼行的第二部分再次指定myObject有什么意義?

你有沒有做過這樣的事情:

myObject hello = new anotherObject();

為什么不呢

myObject hello = new();

基本多態性。 你可以說myObject hello = new derivesFromMyObject()。

鑒於對象繼承/多態的可能性,那么你可以在某些時候做:

BaseObject A = new ChildObject();

是的,你可以做到

MyObject hello = new AnotherObject() ;

如果AnotherObject是MyObject的子類。

你聽說過多態嗎?

作業如下:

myObject hello = new();

會使它變得不可能,因為你無法指定正在創建的對象的實際類型。

您不應該假設變量的類型和變量指向的對象的類型是相同的。 這是多態性的基礎。 例如:

Vehicle a = new Car();
Vehicle b = new Bike();

在大多數語言中,對象的類型必須符合變量的類型。 在大多數OO語言中,這意味着對象的類型必須是變量類型的相同類型,子類型或實現(cfr。接口)。

首先,解決了兩次類型的問題已經解決,只有相反的方式(使用var關鍵字):

var someClass = new SomeClass();

是的,將變量聲明為另一種類型而不是實際實例化通常很有用,例如:

BaseClass b = new ChildClass();

要么

MyInterface i = new ClassThatImplementsInterface();

因為這是C#語言的定義方式。

左側類型的規格與右側類型的規格沒有多大關系。 左側類型的規范指定了變量的類型。 右側類型的規范指定要實例化的類型。

var關鍵字解決了這個問題,但是從你的例子開始,你可以輸入:

var hello = new myObject();

我認為足夠接近。

我也想知道同樣的問題。

如果我們不使用任何類型的多態和子類型,當我們在同一行創建和實例化對象時(如在您的示例中),A a = new(); 語法應該被接受......

如果我們不想重復,我們可以使用var關鍵字,但我不喜歡已知類型的var,它會使代碼更復雜一些。

你有var關鍵字

var hello = new myObject();

另一方面,它是相同的簡化。

當你有一個類層次結構時使用。

class Base {}

class SubA : Base {}

class SubB : Base {}

然后,即使您實例化SubASubB也可能希望將變量聲明為Base

以下不起作用

SubA hello = new SubA();
hello = new SubB();
myObject hello = new myObject();

“myObject hello”聲明了該對象。

“new myObject()”調用myObject的構造函數...有可能你有幾個構造函數使用不同的參數集來創建對象的不同風格。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM