C#“var”和C“auto”的区别

新手上路,请多包涵

我现在正在学习 C++,因为我需要编写一些低级程序。

当我了解“auto”关键字时,它让我想起了 C# 中的“var”关键字。

那么,C#“var”和C++“auto”有什么区别呢?

原文由 Kangjun Heo 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 1.9k
2 个回答

在 C# 中,var 关键字仅在函数内部本地起作用:

 var i = 10; // implicitly typed

在 C++ 中,auto 关键字不仅 可以在变量中推断 类型,还可以在函数和模板中推断类型:

 auto i = 10;

auto foo() { //deduced to be int
    return 5;
}

template<typename T, typename U>
auto add(T t, U u) {
    return t + u;
}

从性能的角度来看, C++ 中的 auto 关键字不会影响运行时性能。并且 var 关键字 也不会影响运行时性能

另一个不同之处在于 IDE 中的智能感知支持。 C#中的var关键字可以很容易地推断出来,你会看到鼠标悬停的类型。在 C++ 中使用 auto 关键字可能会更复杂,这取决于 IDE。

原文由 Tomas Kubes 发布,翻译遵循 CC BY-SA 4.0 许可协议

它们是等价的。它们都允许您不自己指定变量的类型,但变量保持强类型。以下几行在 c# 中是等价的:

 var i = 10; // implicitly typed
int i = 10; //explicitly typed

以下几行在 c++ 中是等价的:

 auto i = 10;
int i = 10;

但是,您应该记住,在 c++ 中, auto 变量的正确类型是使用函数调用的模板参数推导规则确定的。

原文由 SingerOfTheFall 发布,翻译遵循 CC BY-SA 3.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题