首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >下面的数据类型分配是否类似?

下面的数据类型分配是否类似?
EN

Stack Overflow用户
提问于 2010-05-19 12:24:33
回答 2查看 76关注 0票数 1

我对语言及其基础非常感兴趣,我想向社区提出这个问题。在这些语言中,以下内容与其他语言类似吗?

C#

代码语言:javascript
复制
Foo bar = default(Foo); //alloc
bar = new Foo(); //init

VB.NET

代码语言:javascript
复制
Dim bar As Foo = Nothing  'alloc
bar = New Foo()   'init

Objective-C

代码语言:javascript
复制
Foo* bar = [Foo alloc];   //alloc
bar = [bar init];    //init
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2010-05-19 12:55:28

Foo类型既可以是值类型,也可以是引用类型,当然Objective-C除外。

假设Foo是引用类型,那么对于C#和VB.NET,第一行不会为对象分配任何内存,因为Objective-C第一行将实际分配内存,所以这是不同的。.NET语言在第二行的一行中执行分配和初始化。

在Foo是值类型的情况下,那么.NET语言彼此类似,Objective-C没有值类型(至少我上一次使用它是在15年前)。

票数 2
EN

Stack Overflow用户

发布于 2010-05-19 13:01:02

您在C#和VB.NET中都覆盖了bar。您的代码等同于:

代码语言:javascript
复制
Foo bar;  // does nothing but declare a handle
bar = new Foo(); // alloc AND init

或者简单地说:

代码语言:javascript
复制
Foo bar=new Foo();

在Obj-C显然将分配与初始化分开的地方,所有其他类似C++的语言都将这两者结合在一起,认为(正确的是,我相信)你永远不想拥有部分未初始化的对象(当然,除了构造函数)。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2862840

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档