C#语言的数据类型主要分为三类:值类型、引用类型和指针类型。C#和C、C++不同,C#很少使用指针类型,主要是因为指针的安全问题。
值类型分为三种:结构类型(struct)、枚举类型(enum)和基本数据类型。其中基本数据类型是使用最多的,主要有int、long、char等整数类型,float、double等实数类型和ture、false的布尔类型。
C# 的引用类型主要有数组、字符串、类、接口和委托。
数据类型的使用,除了声明一个数据在代码中的使用之外,还可以在键盘输入一个数据,C#的输入语句主要是两个Console.Read()和Console.ReadLine()。
Console.Read()和Console.ReadLine()的区别:
Console.Read() | Console.ReadLine() |
---|---|
读取一个字符 | 读取一行字符 |
返回的是ASCII | 返回的是string |
从上面所述的数据输入中,我们可以得知,当我们需要读取一个整型或者实型,那么单单利用Console.Read()和Console.ReadLine()是不能完成我们所想的,而且数据类型之间也有明确的区分,所以我们就需要使用数据的类型转换。
隐式转换就是将取值范围小的类型转换为取值范围大的类型,比如int转换为long,float转换为double。
int i = 10;
long j = i:
Console.WriteLine(j);
Console.ReadKey();
显式转换与隐式转换相反,显式转换是取值范围小的类型转换为取值范围大的类型,所以显式转换也称为强制类型转换。
double d1 = 2.2;
double d2 = 3.3;
int sum = (int)(d1 + d2);
Console.WriteLine(sum);
数值与字符串之间的数据类型转换就要使用Parse()方法和Convert类,不过这二者还是有一定区别的,Parse()方法只能转换为数字类型的字符串,而Convert可以在各种基本类型之间转换,相比之下,使用Convert类会更多一点。
Convert类的方法及使用:
方法 | 使用 |
---|---|
ToInt16/32/64() | 转换为整型(int类型) |
ToSingle() | 转换为单精度(float类型) |
ToDouble() | 转换为双精度(double类型) |
ToDecimal() | 转换为十进制实数(decimal类型) |
ToString() | 转换为字符串类型(string类型) |
string number1 = "32";
int n1 = Convert.ToInt32(number1);
string number2 = "3.2";
float n2 = Convert.ToSingle(number2);
利用Parse()方法和Convert类输入整型、实型:
int j = int.Parse(Console.ReadLine());
int i = Convert.ToInt32(Console.ReadLine());
float f = Convert.ToSingle(Console.ReadLine());
数据类型转换可以是值类型和值类型之间,也可以在值类型与引用类型之间相互转换,这就是装箱和拆箱。
装箱:值类型转换为引用类型
int i = 100;
object obj = i;
Console.WriteLine(obj);
拆箱:引用类型转换为值类型
int i = 100;
object obj = i;
try
{
int j = (int)obj;
Console.WriteLine("拆箱成功!");
}
catch
{
Console.WriteLine("拆箱不成功!");
}
注意:布尔(bool)类型不能进行数据的类型转换。