【发布时间】:2015-01-01 06:49:29
【问题描述】:
在学习 C# 时,我想到了这个问题。 void 和 var 有什么区别?
这是我想分享的两个例子:
void * voidInt = (void *) 7;
void * voidChar = (void *) 'F';
void * voidCharArray = (void *) "AbcString";
这是var的例子:
var varInt = 7;
var varChar = 'F';
var varCharArray = "AbcString";
-
void是匿名数据类型吗? - 如果是,那么主要是什么
var和void的区别?
有人可以帮我解决这个问题吗?
【问题讨论】:
-
var是纯粹的语法糖。编译器尽力隐式推断强类型。就好像,您已经在源代码中指定了特定类型..但懒得自己输入。尝试设置var x = null;看看有什么不同。 -
@VikasGupta 它给出了错误:错误
Cannot assign <null> to an implicitly-typed local variable -
@FaizanRabbani Exactly.. :) 这里的关键部分是“隐式类型的局部变量”,您可以将 null 分配给 void 指针,但对于 var 而言并非如此。因为 var 完全不同..下面的答案和其他cmets已经说得够多了..所以我将跳过其余部分
-
注意:C# 支持指针,包括
void*指针 - 在unsafe块中。最终,void*的 C# 等效项是:void* -
在 C++11/14 中有一个与 C# 的
var foo = some_expression;非常相似的类比,那就是auto foo = some_expression;。在这两种情况下,变量foo都是强类型的,但该类型是在编译时自动从some_expression的类型推断出来的(很可能是一个表达式)。