苏飞论坛

 找回密码
 马上注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

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

HttpHelper万能框架(V2.3) HttpHelper官方出品,无敌框架讨论区 - 源码下载 - 在线测试和代码生成

HttpHelper爬虫类(V1.9) 最牛的爬虫类,没有爬不到只有想不到 源码 - 代码生成器 - 讨论区 - 教程- 例子

查看: 10354|回复: 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

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

发表于 2013-5-21 08:43:32 | 显示全部楼层
坐沙发来了
发表于 2013-5-21 08:44:33 | 显示全部楼层
讲得很详细,很授用。
发表于 2013-5-23 10:10:29 | 显示全部楼层
先留个脚印,有空了再看
发表于 2013-5-23 11:59:17 | 显示全部楼层
那我想类型都用var有不指明的话,这样有什么坏处?会占用空间吗?
发表于 2013-5-23 12:18:14 | 显示全部楼层
¤及ラ时雨◎ 发表于 2013-5-23 11:59
那我想类型都用var有不指明的话,这样有什么坏处?会占用空间吗?

最好不要这样,好处就是会根据值来确实类型,在你不知道使用这个变量时会是什么样的类型时使用Var,如果知道建议还是使用正常的类型来定义比较好
发表于 2013-5-23 12:19:34 | 显示全部楼层
yangying 发表于 2013-5-23 12:18
最好不要这样,好处就是会根据值来确实类型,在你不知道使用这个变量时会是什么样的类型时使用Var,如果知 ...

好的,谢谢!能那么快收到你的回复,真高兴!
 楼主| 发表于 2013-5-23 12:22:08 | 显示全部楼层
¤及ラ时雨◎ 发表于 2013-5-23 12:19
好的,谢谢!能那么快收到你的回复,真高兴!

呵呵,楼上说的很对,真是快,比我还快
发表于 2013-7-24 14:48:34 | 显示全部楼层
写的很好啊,飞飞说,平时要尽量用int a=0;这种形式,请问用var 有啥副作用吗,谢谢。
您需要登录后才可以回帖 登录 | 马上注册

本版积分规则

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

GMT+8, 2019-2-20 02:50

© 2017-2018

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