黑马程序员技术交流社区

标题: 变量 and 常量 [打印本页]

作者: 马毅    时间: 2012-12-16 17:57
标题: 变量 and 常量
本帖最后由 Mayi 于 2012-12-16 22:37 编辑

一.变量:
    在C#中声明一个变量用如下格式:
  1. //变量类型 变量名
复制代码
   例如声明一个为 i 的int类型变量,则可以如下:
  1. int i ;
复制代码
    但是声明了这个变量( i )后,编译器不允许在表达式中使用这个变量,否则会报如下错误:
  1. 错误  使用了未赋值的局部变量“i”
复制代码
    这是因为没有初始化变量 i ,给变量赋值(初始化)可以用 “ = ”,例如:
  1. i = 10;
复制代码
    还可以在声明的时候就给变量初始化,例如:
  1. int i = 10;
复制代码
    还可以在一行中声明多个变量,例如:
  1. int i = 0,j = 5;
复制代码
    但是要注意一点,若是在同一行中声明多个变量,则所有变量必须是同一数据类型,不能是下面这样:
  1. int x = 15,string s = "ssss"; //错误
复制代码
    关于变量的初始化,须注意一下两点:
        1. 变量是类或者结构中的字段,因为在创建类或者结构时若没有初始化,则会给其一个初始值。
        2. 若声明方法的局部变量,则必须显式声明,之后方能在其后的表达式中使用该值,例如:
  1. static void M1()
  2.         {
  3.         int id;
  4.         Console.WriteLine(d); //在使用之前必须初始化
  5.         }
复制代码
    如若确定某个变量的数据类型,则可以使用类型推断,如声明一个int类型:
  1. int i = 10;
复制代码
        或者
  1. var i = 10;
复制代码
    在编译后,二者是等价的,后者虽没有声明为int类型,然根据其赋值,可以推断为int类型,当然可以用:
  1. Console.WriteLine(i.GetType());
复制代码
            将其数据类型向控制台打印出来,看是不是int类型。
    关于类型推断,必须注意以下几点:

        1. 所谓的类型推断就是根据给变量赋的值推断其数据类型,所以必须在声明的时候就给其初始化,否则会报错
  1. 错误                隐式类型的局部变量必须已初始化        
复制代码
        2.不能给类型推断变量赋没有初始化的对象,否则会报和上面一样的错,例如:
  1. int i;
  2.             var j = i;
复制代码
    在声明了一个变量后,在能访问该变量的区域就叫变量的作用域,一般有如下规则:
        1. 局部变量在声明该变量语句快的左花括号和右花括号之间。
        2. 在for,while等语句块中声明的变量其作用域在该语句块内,若两个名字相同的变量作用域有交集的话就会报错,若作用域木有交集,则可以声明多个名字相同的变量。
  1. static void M1()
  2.         {
  3.      int i = 10;//作用在整个M1中
  4.      for (int j = 0; j < 10;j++ )// i 作用在整个循环中
  5.      {
  6.             Console.WriteLine("{0}{1}",i,j);
  7.      }
  8. }
复制代码
    但有一点要注意,C#中把在类级别上声明的变量看作字段,而把在方法中声明的变量看作局部变量,若局部变量和字段有冲突(同名),局部变量会隐藏字段,有如下代码:
  1. class Program
  2.     {
  3.      static int i = 10;
  4.      static void Main(string[] args)
  5.      {
  6.           int i = 50;
  7.           Console.WriteLine(i);
  8.           Console.WriteLine(Program.i);
复制代码
    第一个会打印出50,而第二个会打印出10,为什么呢?因为Main中的局部变量隐藏了字段i,此时可以用    类名.字段名访问类级的变量(字段)。

二.常量:

    看字面意思,常量就是值不会变化的变量,其声明格式如下:
  1. const int i = 50;
复制代码
    使用常量须注意:
        1. 常量必须在声明的时候初始化,初始化后其值就不能再改变。
        2. 不能把变量的值用于初始化常量,(区别去只读字段)。
        3. 常量是static的,但在声明的时候不允许有static修饰符
其他C#基础看这里




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2