[英]What C# type to use to map MySql's POINT data type in Entity Framework Core?
[英]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 {}
然后,即使您實例化SubA
或SubB
也可能希望將變量聲明為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.