2010-05-19 14 views
1

我對語言及其基礎非常感興趣,我想向社區提出這個問題。這些語言中的以下對方是否與以下類似?以下數據類型分配是否類似?

C#

Foo bar = default(Foo); //alloc 
bar = new Foo(); //init 

VB.NET

Dim bar As Foo = Nothing 'alloc 
bar = New Foo() 'init 

目標C

Foo* bar = [Foo alloc]; //alloc 
bar = [bar init]; //init 

回答

2

Foo類型可以是一個值類型或引用類型,除了在Objective- C當然。

假設Foo是一個引用類型,那麼對於C#和VB.NET,第一行不會爲該對象分配任何內存,因爲Objective-C的第一行將實際分配內存,所以這是一個區別。 .NET語言在第二行的一行中執行分配和初始化。如果Foo是一個值類型,那麼.NET語言彼此是類似的,Objective-C沒有值類型(至少不是我在15年前最後一次使用它)。

0

你在覆蓋C#和VB.NET中的bar。您的代碼僅相當於:

Foo bar; // does nothing but declare a handle 
bar = new Foo(); // alloc AND init 

或者乾脆:

Foo bar=new Foo(); 

這裏的obj-C顯然是從初始化分開分配,所有其他的C++ - 像語言(IMO正確地)結合2,以爲你永遠不會想要部分未初始化的對象(當然,拋開構造函數)。

相關問題