C#学习之旅(2)--变量与常量

来源:互联网 发布:成都淘宝运营招聘 编辑:程序博客网 时间:2024/05/18 17:59

基本上学习任何一门语言,都会简单学习一下变量和常量的概念。这个相当于要书写优美的诗句,必须先掌握基本字词一样。只有先积累一些最基本的单元的概率,才能组合出优秀的代码。这里在学习过程中,并不详细讲解每一个概率,只是想较为全局的熟悉变量和常量的概率,同时对比于c语言的主要差异,以达到对比学习,加深记忆的效果。
1、变量类型
C#中的变量类型根据定义可以分为两种:一种是值类型,另一种就是引用类型。这两种类型的差异在于数据的存储方式,值类型的变量本身直接存储数据,而引用类型则存储实现数据的引用,程序通过此引用找到真正的数据。这就好比于,C语句中的值数据与数据地址的差异。

(1)值类型
(1.1)整数类型

sbyte 8位有符号整数
short 16位有符号整数
int 32位有符号整数
long 64位有符号整数

byte 8位无符号整数
ushort 16位无符号整数
uint 32位无符号整数
ulong 64位无符号整数

在学习基本的整数类型时,发现有一个sbyte类型和byte类型,大小是8位数值,相当于char的大小,但是这个类型跟char类型有什么区别呢。
简单来说就是sbyte类型只是一个数值类型,则char除了是可以表示数值类型外,还可以表示字母。

    例如:        byte value1 = 97;        char value2 = 'a'; //其对应的ASCII编码的数值大小是97        int transfer1 = (int)value1;        int transfer2 = (int)value2;        则transfer1和transfer2是相等的。        但是下面的赋值,却是错误的。        byte wrong_value = 'a'; //这条编译就会出错。

(1.2)浮点类型
float 精确到7位数
double 精确到15~16位数
(1.3)布尔类型
一个布尔类型的变量,其值只能是true或者false,不能将其它任何值赋值给布尔类型的变量。

    bool flag = 745; //wrong    bool myflag = 1 > 0; //right

(2)引用类型
所有的引用类型都需要用new 来生成一个实例。所有被称为“类”的都是引用类型,主要包括类、接口、数组和委托。

2 枚举类型
枚举类型是一种独特的值类型,它用于声明一组具有相同性质的常量。

3 类型转换
C#支持显式转换和隐式转换,但是因为所有的隐式转换都可以显式表达,故而采用显式转换,可以确保转换语句的正确性,同时也能增加代码的可读性。也可以通过Convert关键字来显式转换。

    double x = 1.12;    int y = (int)x;    int z = Convert.ToInt32(x);

4 装箱和拆箱
装箱:将值类型转换为引用类型的过程。
拆箱:将引用类型转换为值类型的过程。

    int i = 123;    object obj = i; //装箱操作    int j = (int)obj; //拆箱操作

对于装箱而言,只是将被装箱的值类型复制一个副本来转换;而对于拆箱而言,需要注意类型的兼容性,即不能将一个值为string的object类型转换成int类型。

5 常量
定义一个常量用const 关键字来说明,且常量一旦被定义后,就不能再改变。

    const double PI = 3.14;

6 运算符
除了一些关系运算符,逻辑运算符等基本运算符外,C#中还有一些不能简单归类的运算符。
is 运算符
该运算符用于检查变量是否为指定的类型,如果是,返回真,否则,返回假。

    int i = 0;    bool result = i is int;

new 运算符
该运算符用于创建一个新的类型实例,它有以下3种形式。
(1)对象创建表达式,用于创建一个类类型或者值类型的实例。
(2)数组创建表达式,用于创建一个数组类型实例。
(3)代表创建表达式,用于创建一个新的代表类型实例。

    string[] ls = new string[5];

typeof运算符
该运算符用于获得系统原型对象的类型,也就是Type对象。

    Type mytype = typeof(int);    //mytype的值是System.Int32
原创粉丝点击