C#语言基础-1变量及基础类型

1、基础
  语句以分号(;)结尾
  用花括号({})把语句组合为块
  单行注释用双斜杠开头//, 多行注释以/*开头,以*/结尾。注释可以让人更好的理解程序,编译器编译时自动忽略。要适当合适的使用注释。
  C#区分大小写
  所有C#代码必须包含在一个类中。类的声明用关键字clas类型和花括号{}组成修饰符用于指定用户所定义的方法的某些特性

2、变量

  声明:数据类型 变量名称; 如 int i;
  赋值:变量名 赋值运算符(=) 值; 如 i=1;
  声明并赋值:数据类型 变量名称 赋值运算符(=) 值; 如 int i=1;
  同类型多变量赋值:int x=1,y=2;

  要声明不同类型的变量,需要使用单独的语句。在多个变量的声明中,不能指定不同的数据
  如 正确方式: int i=1; bool isOk=true;
  不正确方式:int i=1,bool isOk=true;

  变量初始化
  变量必须初始化之后才可以使用,否则编译器会标记警告。
  变量是类或结构中的字段时,如果没有显示初始化,创建变量时会自动初始化默认值。
  方法的局部变量未显示初始化时,编译器会在初始化之前使用它的地方报错。


  类型推断
  类型推断使用var关键字,编译器可以根据变量的初始化值 “推断”变量的类型。
  声明:var i=1;
    i在它的作用域内就是int类型。
  使用规则:
    变量必须初始化。否则,编译器就没有推断变量类型的依据。
    初始化器不能为空。
    初始化器必须放在表达式中。
    能把初始化器设置为一个对象,除非在初始化器中创建了一个新对象
    声明了变量,推断出了类型后,就不能改变变量类型了。
    变量的类型确定后,就遵循其他变量类型遵循的强类型化规则。

    变量作用域
    变量的作用域是可以访问该变量的代码区域。
  规则:
    类在的作用域内,其字段也在该作用域。
    局部变量存在于声明变量的块语句或方法的作用域内。(声明语句所在的花括号内{})
    在for、while或类似语句中 声明的局部变量存在于该循环体内。

    局部变量的作用域冲突
    不同作用域的变量可以同名。
    同名的局部变量不能在同一作用域内声明两次

    字段和局部变量的作用域冲突
    类型级别声明的变 量看作字段,而把在方法中声明的变量看作局部变量。
    在方法中调用同名变量时,自动隐藏同名的类级变量,如需访问类级变量,需要使用this
    例如

class test
{
  int i{get;set;}
  void a()
  {
     int i=20; //局部变量
     Console.WriteLine(i);//输出的是20
     Console.WriteLine(this.i);//输出的是字段i的值
  }
}

  3、常量

  在声明和初始化变量时j在变量的 前面加上关键字 co11晚 ,就可以把该变量指定为一个常量

  规则:

    常量必须在声明时初始化。指定了其值后,就不能再改写了。

    常量的值必须能在编译时用于计算。因此,不能用从一个变量中提取的值来初始化常量。 如果需要这么做,应使用只读字段

    常量总是静态的¤但注意,不必(实际上,是不允许)在常量声明中包含修饰符 static。

  使用常量的好处

    常量使程序 变得更易于阅读。

    常量使程序更易于修改。如π的取值精度可以随时调整常量π的值

    常量更容易避免程序出现错误。声明常量以外的其它地方赋值时报错。

4、预定义数据类型
  C#把数据类型分为:值类型和引用类型。
  值类型存储在堆栈中,而引用类型存储在托管堆上。

int x,y;
x=10;
y=x;//x=10;y=10;
x=20;//x=20;y=10;
y=30;//x=20;y=30;

  x和y是值类型,所以当y=x时,y复制了x的值,y存储了10,并不是指向x,所以x修改值后不影响y,y修改值时不影响x。

public class Person
{
  public int Age{get;set;}
}
Person x,y; 
x
=new Person(); x.Age=1;
y=x;//x.Age=1;y.Age=1; x.Age=2;//x.Age=2;y.Age=2; y.Age=3;//x.Age=3;y.Age=3;

  x和y是引用类型,所以当y=x时,y复制了x的指向内存的位置,x和y都存储了对象Person的内存位置,所以修改对象Person,x和y都会变化,因为x和y指向的是同一个对象。

要创建对象时,必须使用关键字new。

  如果变量是一个引用类型,就可以把其值设置为null,表示它不引用任何对象,如果将引用设置为null,就不能对它调用任何非静态的成员函数或字段,否则会报错。

  CTS类型
  内置于,NET Framework中的数据类型就是CTS类型

  C#的数据类型与CTS类型相对应。例如 int 对应 System.Int32

  预定义的值类型
  内置的CTS值类型表示基本类型,如整型和浮点类型、字符类型和布尔类型
   1.整型
   C#支持8个预定义整数类型:sbyte、short、int、long、byte、ushort、uint、ulong

  对一个整数是 int、long、uint、ulong没有任何显式的声明,则该变量默认为int类型。为了把输入的值指定为其他整数类型,可以在数字后面加上如下字符:
  uint ui = 1234U;1ong l = 1234L;ulong ul = 1234UL;   大小写均可以。

 2,浮点类型
 C#支持2个浮点类型:float、double

如果没有对浮点型数值进行强制限定类型,默认是double。定义float类型需要 float fl=1.234F;  大小写均可以

  3.decimal类型
  表示更高精度的浮点数,一般用于财务计算,货币类型。不是基本类型,所以使用时会有性能损失。定义decimal d=1.234M; 大小写均可。

 4.bool类型
C#的 bool类型用于包含布尔值 tue或 false

  5.字符类型 
  单个字符数据,C#支持char数据类型

  预定义的引用类型
  C#支持两种预定义的引用类型:object和string

  在C#中,object类型是最终的父类型,层次结构中的其它对象都是从object派生的。
  object的作用
    可以使用object引用绑定任何子类型的对象。
    提供一般用途的基本方法。如Equals(),ToString(),GetType()等

猜你喜欢

转载自www.cnblogs.com/liuxiansheng1024/p/12527459.html