C# 基础知识系列之 C#编程基础

C#的基本数据类型、变量、常量、表达式、程序流程控制语句以及数组等概念是C#程序设计的基础,掌握这些基本知识是编写正确程序的前提。
1.基本类型
C#语言是一种强类型语言,在程序中用到的变量、表达式和数值等都必须有类型,编译器检查所有数据类型操作的合法性,非法数据类型操作不会被编译。这种特点保证了变量中存储的数据的安全性。
Microsoft.NET构架核心是一个公用类型系统(CTS, CommonType System),它定义了在不同程序语言语法中的一系列公共类型。C#是面向对象的语言,它把任何事物都看成对象,所有的对象都隐式地从CTS的基类System.Object派生而来。数据类型分成两大类:一个是值类型(Value Types),一个是引用类型(Reference Types)。

   值类型

  所谓值类型就是一个包含实际数据的量。即当定义一个值类型的变量时,C#会根据它所声明的类型,以堆栈方式分配一块大小相适应的存储区域给这个变量,随后对这个变量的读或写操作就直接在这块内存区域进行。
    例如:
    int  iNum=10;     // 分配一个32位内存区域给变量iNum,并将10放入该内存区域
    iNum=iNum+10;   // 从变量iNum中取出值,加上10,再将计算结果赋给iNum。

  枚举类型
枚举类型是一组命名的常量集合,其中每一个元素称为枚举成员列表。除了chart之外的所有整数类型都可以作为枚举类型的基本类型,枚举类型的声明形式如下:
enum  name  [ : base_type ] { enumerator_list }
其中:
enum——声明枚举类型的关键字
name——所声明的枚举类型的变量名
base_type——除了char之外的整数类型,缺省约定为int类型
enumerator_list——枚举成员列表,成员之间用逗号分隔,在声明时,可以对成员进行赋值(缺省时,第一个成员的值是0),在此之后的成员值按前面的成员值依次加1。
例如:
enum color1 { red, green, blue }     // red=0, green=1, blue=2
    enum color2 : byte { red, green=2, blue } // red=0, green=2, blue=3
    枚举类型在声明的时候就创建一个值类型的枚举变量,以后就可直接使用枚举成员名。
例如:color1.red,color1.green等。
 结构类型

2.引用类型

引用类型包括类(class)、接口(interface)、数组、委托(delegate)、object和string。其中object和string是两个比较特殊的类型。object是C#中所有类型(包括所有的值类型和引用类型)根类。string类型是一个从object类直接继承的密封类型(不能再被继承),其实例表示Unicode字符串。
     一个引用类型的变量不存储它们所代表的实际数据,而是存储实际数据的引用。引用类型分两步创建:首先在堆栈上创建一个引用变量,然后在堆上创建对象本身,再把这个内存的句柄(也是内存的首地址)赋给引用变量。
例如:
string s1, s2;
s1="ABCD"; s2 = s1;
其中,s1,s2是指向字符串的引用变量,s1的值是字符串“ABCD”存放在内存的地址,这就是对字符串的引用,两个引用型变量之间的赋值,使得s2、s1都是对“ABCD”的引用。

3.值类型与引用类型的关系

以把值类型与引用类型的值赋给object类型变量,C#用“装箱”和“拆箱”来实现值类型与引用类型之间的转换。
装箱就是将值类型包装成引用类型的处理过程。当一个值类型被要求转换成一个object对象时,装箱操作自动进行,它首先创建一个对象实例,然后把值类型的值复制到这个对象实例,最后由object对象引用这个对象实例。
例如:
using System;
class Demo

 public static void Main ( )
    {   int x = 123;
       object obj1=x;        // 装箱操作
        x = x+100;           // 改变x的值,obj1的值并不会随之改变
       Console.WriteLine (" x= {0}" , x );       // x=223
       Console.WriteLine (" obj1= {0}" , obj1 );     // obj1=123
    }
}

原文地址:https://www.cnblogs.com/zhangxin1989/p/2800391.html