为什么需要声明

保罗·斯宾塞

我目前正在教一位同事.Net,他问了我一个困扰我的问题。

我们为什么要申报?

如果var是隐式类型,为什么还要声明呢?

Animal animal = new Animal();

变成

var animal = new Animal();

可能成为

animal = new Animal();

隐式键入仍将意味着这是一个静态类型的变量。

如果为变量分配了两种不同的类型,但它们不共享基类(对象除外),则可能是编译器错误。

是否出于技术原因无法做到这一点,或者在造型上我们喜欢Havein?

帕特里克·霍夫曼

当然,这是可能的。

我可以想到一些您不希望这样做的原因:

  1. 您的变量范围是什么?如果您不告诉编译器,则不清楚。animals在两种方法中成为私有变量还是在两种方法中成为作用域变量?
  2. 如果名字是错字怎么办?你永远不会知道。
  3. 如果您已经为该变量分配了一个值,然后尝试分配一个与上一个(即javascript样式)不兼容的新值,该怎么办(贷记给Mario Stoilov

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

为什么需要声明AVAudioSession实例?

来自分类Dev

为什么Java源文件需要包声明?

来自分类Dev

为什么在C中使用函数之前需要声明函数?

来自分类Dev

为什么我们需要声明枚举变量?(C)

来自分类Dev

为什么需要重新声明重载的虚拟函数?

来自分类Dev

为什么Angular $ routeProvider配置需要HTML中声明的ngView

来自分类Dev

为什么在声明委托时需要标识符?

来自分类Dev

为什么不需要声明List实现?

来自分类Dev

为什么JavaScript在函数声明后不需要分号?

来自分类Dev

为什么这里不需要退货声明?

来自分类Dev

为什么在定义变量类型时需要双重声明?

来自分类Dev

Java为什么在没有设置方法的情况下为什么需要将实例变量声明为final

来自分类Dev

为什么已经声明了变量,为什么我的for循环需要一个标识符?

来自分类Dev

为什么即使我在JSFiddle中声明ng-app =“ MyApp”,也为什么需要angular.bootstrap

来自分类Dev

为什么在通过模板的静态分派中不需要前向声明?

来自分类Dev

为什么我需要在声明中使用类型断言来将变量分配为null?

来自分类Dev

在Scala中键入Lambda:为什么在声明中需要多余的括号?

来自分类Dev

为什么需要使用“ WINAPI *”作为语法来为DLL中的函数声明函数指针

来自分类Dev

为什么声明之后的初始化需要数据类型?

来自分类Dev

为什么在全局范围内声明的枚举明确不需要终止号?

来自分类Dev

为什么需要在C中的字符串数组中声明字符串的长度?

来自分类Dev

为什么需要声明“ extern crate core”才能使用libcore?

来自分类Dev

如果使用fprintf,为什么内联函数需要声明为静态?

来自分类Dev

为什么LuaJIT的FFI模块不需要声明的调用约定?

来自分类Dev

在Swift中进行声明时,为什么需要传递此结构的变量?

来自分类Dev

为什么我需要迅速在数组声明的末尾使用大括号?

来自分类Dev

为什么在Python中进行散列之前需要声明编码,我该怎么做?

来自分类Dev

为什么我需要在docker-compose.yml中显式声明env_file?

来自分类Dev

当嵌套在C的结构中时,为什么需要声明联合类型的变量?

Related 相关文章

  1. 1

    为什么需要声明AVAudioSession实例?

  2. 2

    为什么Java源文件需要包声明?

  3. 3

    为什么在C中使用函数之前需要声明函数?

  4. 4

    为什么我们需要声明枚举变量?(C)

  5. 5

    为什么需要重新声明重载的虚拟函数?

  6. 6

    为什么Angular $ routeProvider配置需要HTML中声明的ngView

  7. 7

    为什么在声明委托时需要标识符?

  8. 8

    为什么不需要声明List实现?

  9. 9

    为什么JavaScript在函数声明后不需要分号?

  10. 10

    为什么这里不需要退货声明?

  11. 11

    为什么在定义变量类型时需要双重声明?

  12. 12

    Java为什么在没有设置方法的情况下为什么需要将实例变量声明为final

  13. 13

    为什么已经声明了变量,为什么我的for循环需要一个标识符?

  14. 14

    为什么即使我在JSFiddle中声明ng-app =“ MyApp”,也为什么需要angular.bootstrap

  15. 15

    为什么在通过模板的静态分派中不需要前向声明?

  16. 16

    为什么我需要在声明中使用类型断言来将变量分配为null?

  17. 17

    在Scala中键入Lambda:为什么在声明中需要多余的括号?

  18. 18

    为什么需要使用“ WINAPI *”作为语法来为DLL中的函数声明函数指针

  19. 19

    为什么声明之后的初始化需要数据类型?

  20. 20

    为什么在全局范围内声明的枚举明确不需要终止号?

  21. 21

    为什么需要在C中的字符串数组中声明字符串的长度?

  22. 22

    为什么需要声明“ extern crate core”才能使用libcore?

  23. 23

    如果使用fprintf,为什么内联函数需要声明为静态?

  24. 24

    为什么LuaJIT的FFI模块不需要声明的调用约定?

  25. 25

    在Swift中进行声明时,为什么需要传递此结构的变量?

  26. 26

    为什么我需要迅速在数组声明的末尾使用大括号?

  27. 27

    为什么在Python中进行散列之前需要声明编码,我该怎么做?

  28. 28

    为什么我需要在docker-compose.yml中显式声明env_file?

  29. 29

    当嵌套在C的结构中时,为什么需要声明联合类型的变量?

热门标签

归档