苏飞论坛

 找回密码
 马上注册

QQ登录

只需一步,快速开始

分布式系统框架(V2.0) 轻松承载百亿数据,千万流量!讨论专区 - 源码下载 - 官方教程

HttpHelper爬虫框架(V2.7-含.netcore) HttpHelper官方出品,爬虫框架讨论区 - 源码下载 - 在线测试和代码生成

HttpHelper爬虫类(V2.0) 开源的爬虫类,支持多种模式和属性 源码 - 代码生成器 - 讨论区 - 教程- 例子

查看: 60044|回复: 31

[C#基语法] [C#基语法]之C#变量(2)初始化与类型推断

[复制链接]
发表于 2013-5-21 08:32:29 | 显示全部楼层 |阅读模式
               [C#基语法]之C#变量(2)初始化与类型推断
系列文章导航

  [C#基语法]苏飞传奇版   http://www.sufeinet.com/thread-3091-1-1.html

我认为在变量中有两点是我们不得不提的。
第一点比较重要的就是初始化,为什么要说这点呢,其实呢在C#中变量是一种强类型,也可以理解为强制定义类型,强制安全性。他的意思就是说在使用这个变量之前必须先规定他的类型
以保证安全性,那么我们根据这些可以总结出来它的特性如下:
1.变量在使用之前必须指定类型并初始化。
2.变量的初始化多样性

变量在使用之前必须指定类型并初始化。

    这个其实不难理解,我以几个小例子来说明,先看下面变量的定义
[C#] 纯文本查看 复制代码
                    int a, b;
                    int c = a + b;

大家想想上面的写法对吗?
答案是否定的这样一定会报错。
QQ截图20130521080852.jpg
这就是我们的第一点,在使用这个变量之前一定要给他初始化,说到初始化,我们的方法就多了,看下面例子
1.
[C#] 纯文本查看 复制代码
    int a = 0; int b=10;

2.
[C#] 纯文本查看 复制代码
  int a=0, b=10;

3.
[C#] 纯文本查看 复制代码
   int a, b; a = b = 10;

好了这个我就不再多举例了,大家想想还有什么样的方法可以初始化变量吧。
这点就是多样性了。
类型推断

 什么类型推断呢?这类其实主要是一个关键字Var,推断的工作是由编译器来做的,因为C#中保留了Var进行变量的初始化。与定义。
这个就与JS的变量有所想同了,
我们正常的定义方法是强类型,就是说会根据变量的类型来确定值的类型。
然后使用Var正好相反,它是根据值的变量来确实变量的类型。
下面看下例子
[C#] 纯文本查看 复制代码
  var number = 0;
                    int number = 0;

大家想一下这两个定义 的语句有什么不同,我可以肯定的告诉大家他是正确的,不要怀疑他的正确性,主要是说说有什么不同。
其实呢除了,使用的关键字int与var的不同之外,就再没有什么分别了
他们的做用是相同的,可以说是等价的,即使var number = 0;从来没有声明为int,编译器也可以确定,只要他在作用域内使用,就是一个int,编译之后他们是等价的。
看下面例子就明白了
[C#] 纯文本查看 复制代码
  var name = "苏飞";
                    var age = 26;
                    var isRabbit = false;
                    Console.WriteLine("name的类型:" + name.GetType().ToString());
                    Console.WriteLine("age的类型:" + age.GetType().ToString());
                    Console.WriteLine("isRabbit的类型:" + isRabbit.GetType().ToString());

输出的结果是
[C#] 纯文本查看 复制代码
                    name的类型:System.String
                    age的类型:System.Int32
                    isRabbit的类型:System.Boolean

在这里也是一样的变量也需要先初始化才能使用,和我们上面说的是 一样的规则。这点大家在使用时要注意。因为如果我们不初始化编译器就没有办法推断他的类型了。
关于变量这块咱们到这里就结束了,在以后的使用和文章中如果还有需要其他的特点咱们再一起学习吧。



1. 开通SVIP会员,免费下载本站所有源码,不限次数据,不限时间
2. 加官方QQ群,加官方微信群获取更多资源和帮助
3. 找站长苏飞做网站、商城、CRM、小程序、App、爬虫相关、项目外包等点这里
发表于 2018-5-29 13:38:43 | 显示全部楼层
讲的和详细,受用了,感谢飞哥
发表于 2016-6-10 11:51:54 | 显示全部楼层
NO.2 C#变量初始化与类型推断 ~~学习完毕
 楼主| 发表于 2014-7-10 16:01:53 | 显示全部楼层
Joy的池塘 发表于 2014-7-10 15:50
var用的时候根据赋值确定类型,但不需要值的时候就不能只写一个var a;即使后来赋值也会报错。

这个是必须先初始化的。
发表于 2014-7-10 15:50:53 | 显示全部楼层
var用的时候根据赋值确定类型,但不需要值的时候就不能只写一个var a;即使后来赋值也会报错。
发表于 2014-5-23 12:00:11 | 显示全部楼层
比看书理解的快多了
发表于 2014-5-16 14:08:52 | 显示全部楼层
初始化分值类型和引用类型
值类型一般是直接用"=值"...
引用类型用构造函数 一般是new
 楼主| 发表于 2014-2-24 16:45:30 | 显示全部楼层
BeyondPC 发表于 2014-2-24 16:38
如果我用VAR,变量是类型,是不是按照第一次赋值的类型定义呀?
比如var i=0,那么i的类型就为int型,以后 ...

是的,根据第一次值来定的。这个你要吧写个代码测试下,编译就不会通过
发表于 2014-2-24 16:38:04 | 显示全部楼层
如果我用VAR,变量是类型,是不是按照第一次赋值的类型定义呀?
比如var i=0,那么i的类型就为int型,以后给i赋值,都要赋int型的?
发表于 2014-1-24 20:18:36 | 显示全部楼层
我是初学者 这个是真不懂了  还得学习.............
您需要登录后才可以回帖 登录 | 马上注册

本版积分规则

QQ|手机版|小黑屋|手机版|联系我们|关于我们|广告合作|苏飞论坛 ( 豫ICP备18043678号-2)

GMT+8, 2025-9-19 09:37

© 2014-2021

快速回复 返回顶部 返回列表