• C#隐式类型局部变量经验总结


      这里介绍C#隐式类型局部变量,既然是局部变量,那么它就只能用在方法内部了,注意C#是强类型的,引入了一个var并不是像 javascript那样,变成了一个弱类型的语言。

      C#语言有很多值得学习的地方,这里我们主要介绍C#隐式类型局部变量,包括介绍C#匿名类型等方面。

      C#隐式类型局部变量

      还是先介绍一下C#隐式类型局部变量吧:

      在C# 3.0里多了一个关键字var,他表示这样的一种类型:C#编译器可以根据上下文推断的出来比如var I = 5;编译器可以根据后面的赋值推断的出来i应该是个整型。既然是局部变量,那么它就只能用在方法内部了,注意C#是强类型的,引入了一个var并不是像 javascript那样,变成了一个弱类型的语言。在编译器第一次编译后var就会被确定的类型所替代的。所以对于C#隐式类型局部变量要注意以下几点:

      1.它只能存在于方法内部

      2.它不是一个新的类型,只是一个关键字,或者叫做一个占位符,在C#编译器编译后它就会被确定的类型所替代

      3.它是编译器根据上下文推断出来的,所以所有一切不能被编译器推断出来的用法都是错误的。比如不能这样使用:var nullValue = null;因为null啥也不是,他是一个空指针,是一个不确定的东西。也不能这样使用:var I = 5;I = “abc”;编译器根据第一个赋值会推断出它是一个整型,但是随后又将一个字符串赋值给它,这是怎么回事呢?

      对于var我的建议是不到逼不得已的时候不用,那什么是逼不得已呢?来看我们的匿名类型吧。

      由于匿名类型在我们编写代码的时候并不存在,所以匿名类型也不能作为方法的返回值和参数了。”var”一样,也是只能在方法内部使用。现在是不是有点明白什么时候才是逼不得已使用”var”啊?就是在使用匿名类型的时候,匿名类型编译器可以推断出来,但是靠人工又无法推断了。所以我觉得只在编译器可推断而人不可推断的时候才使用C#隐式类型局部变量,靠我们人工可以推断的还是不建议使用,显式的声明变量类型可以增强代码的可读性,这是一个好的编程习惯,不要因为C# 3.0提供了这样的特性就大用而特用。

  • 相关阅读:
    JSON的序列化和反序列化
    XML的序列化和反序列化
    FTP相关操作
    滑动换屏——Fragment
    AngularJS中复选框(checkbox)的ng-model
    AngularJS将时间戳格式化处理
    Let definitions are not supported by current JavaScript version
    MyBatis中的 suffixOverrides="," 失效
    MyBatisSystemException: Malformed OGNL expression: status != null
    MySQL字符串截取
  • 原文地址:https://www.cnblogs.com/zcy_soft/p/1773632.html
Copyright © 2020-2023  润新知