------- 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();
}
}
}