------- Windows Phone 7手机开发、.Net培训、期待与您交流! -------
一、数据类型的分类
任何一种高级语言都有数据类型,数据类型是用来表达现实世界中的各种不同类型数据的
C#中的数据类型可以分为两种: 值类型(value type)和引用类型(reference type)
1、值类型归类如下:
●简单类型(simple type)
● 结构类型(struct type)
●枚举类型(enum type)
1.1、简单类型
1.1.1、int(整型) 为有符号32位整数,取值范围在-2,147,483,648~ 2,147,483,647之间。
1.1.2、char(字符型 是整型的一种特殊情况)char类型的数据,只能一次存放一个字符,字符要求用单引号引起来,如:char number='a',并且char类型不能为空,char number=null或者char number='';都是错误的 char可以隐式转换为ushort、int、uint、long、ulong、float、double或decimal。但是,不存在从其他类型到char类型的隐式转换。
1.1.3、decimal(小数型)共128个二进制位,具有28至29位十进制有效数字。适用于金融、货币等需要高精度数值的领域。如果希望实数被视为decimal类型,请使用后缀m或M,例如:
decimal myMoney=99.9m;
如果没有后缀m,数字将被视为double类型,从而导致编译器错误
1.1.4、float/double(浮点类型)它们的差别在于取值范围和精度:
float: 取值范围在 1.5x10^-45~ 3.4x10^38之间, 精度为7位数。
double: 取值范围在 5.0x10^-324 ~ 1.7x10^308之间, 精度为 15~16 位数。
1.1.5、string(字符串类型)要求用双引号""将字符串引起来。
1.1.6、bool(布尔类型)只有两个值true和false
1.2、结构类型
1.3、枚举类型
2、引用类型归类如下:
和值类型相比,引用类型不存储它们所代表的实际数据,但它们存储实际数据的引用。在C#中提供以下引用类型
对象类型
类类 型
接口
代表元
二、数据类型的转换
c#常见的类型转换可分为自动类型转换(隐式转换)和强制类型转换(显示转换)、不同类型之间的相互转换 三类。
1、自动类型转换
1.1、参与运算(算术运算和逻辑运算)的操作数和结果类型必须一致。当不一致时,只要满足以下条件,系统自动完成类型转换
◎两种类型兼容
例如:int和double兼容
◎目标类型大于原类型
例如:double>int
int i = 20;
double d = i; //发生自动转换
◎对于表达式
如果一个操作数为double型,则整个表达式可提升为double型。
2、强制类型转换
2.1、语法:
(数据类型名)待转换的值; 如:int b=(int)3.14;
2.2、当将大类型变量赋值给小类型变量时必须使用强制类型转换,不能保证数据的精确度,例如:
double d=19.8;
int i=(int)d;//发生强制转换,此处会丢失数据精度。
2.3、强制性转换的数据类型要兼容
3、不同类型转换
如果是不同类型之间的相互转换则需要用到一些方法来辅助完成;
●tostring()方法 一切类型都可以转换成string类型
●Convert.toint32(待转字符串);
int 变量=Convert.toint32(待转字符串)//把待转字符串转换成int类型后赋给变量。
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace ConsoleApplication4
{
class Program
{
static void Main(string[] args)
{
Console.WriteLine("请输入你的语文成绩:");
string chinese = Console.ReadLine();
Console.WriteLine("请输入你的数学成绩:");
string math = Console.ReadLine();
// Console.WriteLine("你的总成绩为:{0}", chinese + math);//以这样的方法是错误的,同时体现了+的两种意义
int chineseScore = Convert.ToInt32(chinese);
int mathScore = Convert.ToInt32(math);
Console.WriteLine("你的总成绩为:{0}", chineseScore + mathScore);
Console.ReadKey();
}
}
}