變數與類型
C#是強型別的語言,因此每個變數必須宣告類型。在C# 新版本裡面也可以用Var來聲明。
從 Visual C# 3.0 開始,在方法範圍中聲明的變數可以具有隱式類型 var。 隱式類型的本地變數是強型別變數(就好像您已經聲明該類型一樣),但由編譯器確定類型。 下面的兩個 i 聲明在功能上是等效的:
var number = 10; // implicity typed int number2 = 10; // explicity typed
變數的類型類別包括數實值型別和參考型別,數實值型別包括整數型別和非整數型別。
整型根據位元的不同,分為不同的具體類型,包含byte, short, int 和long等
非整型包括char,string等
變數聲明方式
變數必須先聲明,再賦值,最後使用。
變數的名稱一定要有含義,而不能i,j,k這樣!注意的是有含義,不是像C中的加Type類型做變數首碼。
1. 先聲明、再賦值。
int num; num =3; // 這種方式不規範,容易引發問題。要避免這種方法
2. 定義變數時候直接賦值.
int num = 3;
3. 一次聲明多個變數,變數之間用逗號分開.
int num1=20, num2=30, num3=40; // 而不是int i,j = 20,30(python 方式)
變數聲明規則- 只能以字母,_和@開頭,因此不能以$開頭
C#變數區別大小寫!
char A = 'A'; char a = 'a'; // A, a 不同的變數
變數命名規範
1. Camel 命名方法(駝峰): 首個單詞的首字母小寫,其他單詞的首字母大寫
2. Pascal 命名方法:每個單詞的首字母都大寫
C#語言實用Camel方法命名變數或者參數,而命名空間和類使用Pascal命名方法.
補充:還有一種C或者C++常見的命名方法叫匈牙利命名方法(這種方法不推薦在C#以及其他程式設計語言中).
不過匈牙利命名方法中的應用型命名方法在廣泛應用!特別是對於有三個以上的單片語成的變數,這種方法很常用.
參考:
這才是真正的“匈牙利命名法”匈牙利命名法的衰落和建議 C# Int
C# Int中的整型的範圍一定要注意。
範圍:-2,147,483,648 到 2,147,483,647
大小:有符號的32位整數
http://msdn.microsoft.com/zh-cn/library/5kzh1b5w.aspx
比如一個例子,C# int能儲存手機號碼嗎?答案:不能,因為手機的長度超出了int的範圍
C# Char
在C#中Char儲存的是一個字元,要注意的是C# 是Unicode編碼,所以Char是可以儲存一個中文字元
class Program { static void Main(string[] args) { char firstname = '曾'; Console.WriteLine(firstname); Console.ReadKey(); } }
在給char類型的變數賦值的時候需要使用單引號’.
不過需要注意的是由於不同的系統對於Char類型的字元的實現是不一樣的,所以Char對應的長度具體是幾個位元組需要根據系統來確定.比如SQL Server中的char字元是只佔一個位元組的.
C#中的Char的定義對於那些瞭解過C語言的人,但是又不是很精通的來說要特別注意。特別是對知識死記的或者沒有運用過的人,孤立認為Char就佔一個位元組,而實際上這個對於不同過的語言定義是不一樣的,要特別注意。
C# String
字串定義:把多個字元串連起來.
String Length 為字串的長度也就是字元的個數.
string word = "我是IT男";Console.WriteLine(word.Length); // 5
Float, Double 和Decimal
float是32位的浮點數,double是64為的浮點數。decimal是128位元據類型,一般用來儲存金錢。這裡要注意。雖然decimal的位元多,但是範圍比double小,甚至比float小,但是精度最高。
另外需要注意的是C#中直接寫一個帶小數點的實數預設類型為double類型,必須使用m/M來定義decimal類型。f/d/m 分別用來聲明不同的浮點數類型
float salary = 7600.33; // 這裡如果不加f,連編譯都通不過
decimal salary = 7600.33; // 這裡也編譯通不過,一定要加上m
類型轉換
類型轉換包括隱式轉換和顯式強制轉換以及協助轉換函式、轉換類。
隱式轉換:
float number = 10; // 只有在從低到高轉換才能進行
強制轉換:
int num = (int)3.14; // 不同精度的數值轉換可能丟失精度
協助轉換函式:
int.Parse("123”); // 如果解釋的不是數值或者超出範圍,編譯不會出現錯誤嗎,但是運行時就會拋出異常FormatException或者OverflowException
練習
string name = "某某IT男"; int age = 33; char sex = '男'; string enSex = "men"; // 注意要用雙引號 short sexFlag = 1; // 1 表示男, 2 表示女 Console.WriteLine( "My name is {0}" + " age is {1}", name, age);