c# - 声明为 var 的变量如何在 c# 中存储任何数据类型
问题描述
我正在研究我的项目的代码,我是通过'var'关键字来的。我已经知道 var 关键字可以存储任何数据类型。我想了解这是如何发生的。而且我们已经有 object 关键字来做到这一点。那为什么我们也有 var。我们可以使用 object 关键字来实现这一点,为什么要使用 var 关键字。
解决方案
var
不是一种类型 - 它是一种快捷方式。实际变量的类型在编译时确定。相比:
var number = 42;
number = "42"; // Compilation error! You can't assign a string value to an integer variable
和
object number = 42;
number = "42"; // No problem - someNumber used to be an instance of the type (boxed) Int32,
// and now is of type string. The type of the variable is still just object.
在第一种情况下,变量声明等价于说int number = 42;
。类型是根据正确值的类型确定的,在这种情况下,是整数文字。当您尝试以某种方式(例如number + 10
)使用该变量时,该变量的行为与任何其他整数变量一样。
在第二种情况下,变量的类型是object
。它可以随时存储 C# 中可用的任何值。即使变量包含一个整数类型的值,它仍然表现得像一个普通对象(例如,是一个编译时错误,因为在and之间number + 10
没有+
定义运算符)。object
int
推荐阅读
- ruby-on-rails - 如何使用 Wicked gem 保存用户在向导中停止的步骤?
- openstreetmap - 为什么某些 osmid 属于 OSMNX 中的类型列表?
- java - NPE 同时将图像添加到 JPanel
- angularjs - 如果 NG-Disabled = true 我的所有按钮都被禁用
- python - 使用 Tweepy 访问上述推文的信息
- kubernetes - Istio 清单安装 1.9
- performance - 将矩阵与 repa 相乘
- ssh - 无法建立到 EMR 集群 UI 的 SSH 隧道
- error-handling - Laravel 5.8:管理来自队列的失败邮件通知
- arduino - ATmel 处理器不调用 LLVM 全局构造函数