PS:最近學(xué)了C#,很多地方和原理和C以及C++是類似的,因此基本語法我只總結(jié)了一些相對(duì)于不同的定義方式以及一些新的概念。
這里也不再介紹相關(guān)編譯環(huán)境和工程的建立了。
一、Hello World
和其他語言一樣,都是從Hello World著手的。
代碼:
Console.Write("Hello World!");//不會(huì)換行
Console.WriteLine("Hello World!");//會(huì)自動(dòng)換行
Console.ReadKey();//相當(dāng)于在這里中斷
二、三種注釋方法
//:多用于給變量注釋
/*? ?*/:多用于大段文本注釋
///:多用于給類和方法注釋
三、變量
變量的概念、語法、使用規(guī)則和命名規(guī)則這里不在介紹了,和C以及C++幾乎是一樣的。
命名規(guī)范:駝峰命名法
要求變量名首單詞的首字母小寫,其余每個(gè)單詞的首字母大寫。
例如:?time, playerName, vipLevel,myNameIsMonkey
基本類型和C也差不多,但是區(qū)別在于:
float類型:?jiǎn)尉刃?shù)類型, 既能存儲(chǔ)整數(shù),又能存儲(chǔ)小數(shù),值后面需要加上一個(gè) f。
string類型:和C++幾乎一樣。
四、運(yùn)算符合表達(dá)式(和C、C++一樣,不再贅述)
五、占位符
用途:讓字符串與變量連接更舒服。
1.語法結(jié)構(gòu)
先挖坑{0},{1},{2}, 再填蘿卜(變量)進(jìn)坑。
2.注意事項(xiàng)
①你挖了幾個(gè)坑,就應(yīng)該填幾個(gè)蘿卜;
如果你多填了蘿卜,沒效果;
如果你少填了蘿卜,拋異常。
②輸出順序;
按照挖坑的順序輸出,另外蘿卜是有位置順序的。
例如:
Console.WriteLine("我的名字:{0},我今年:{1}", name, age);
六、用戶輸入與轉(zhuǎn)義符
用戶輸入:Console.ReadLine();
轉(zhuǎn)義符:
:表示換號(hào)
”:表示一個(gè)英文半角的雙引號(hào)
:表示一個(gè) tab 鍵的大空格
:表示一個(gè) BackSpace 退格鍵,會(huì)把前面的一個(gè)字符刪掉
\:表示一個(gè)
@:用在字符串的前面,有兩種用途。
①取消“”在字符串中的轉(zhuǎn)義作用,使其單純的就表示一個(gè)斜線[多用于路徑]
②將字符串按照原格式輸出
七、類型轉(zhuǎn)換
強(qiáng)制類型轉(zhuǎn)換和隱式轉(zhuǎn)換不再贅述。
Convert 類型轉(zhuǎn)換
兩個(gè)變量的類型如果相兼容,可以使用自動(dòng)類型轉(zhuǎn)換或者強(qiáng)制類型轉(zhuǎn)換。如果兩個(gè)變量的類型不兼容,比如 string 和 int,string 和 double。這個(gè)時(shí)候我們可以用 Convert 進(jìn)行轉(zhuǎn)換。
注意: 使用 Convert 進(jìn)行類型轉(zhuǎn)換,也需要滿足一個(gè)條件,條件就是“面子上要過得去”
Convert.ToInt32();
Convert.ToDouble();
八、分支結(jié)構(gòu)之 if和switch語句
不再贅述,和C、C++一樣
?九、循環(huán)語句
不再贅述,和C、C++一樣
十、數(shù)組的定義及遍歷(這里只介紹不同之處)
定義及初始化:
數(shù)據(jù)類型[] 數(shù)組名 = new 數(shù)據(jù)類型[數(shù)組長(zhǎng)度];
數(shù)組初始化完成后,各種類型的數(shù)組的默認(rèn)值:
int[], 元素的值默認(rèn)都是 0;
float[], 元素的值默認(rèn)都是 0;
double[],元素的值默認(rèn)都是 0.0;
string[], 元素的值默認(rèn)都是 null;
bool[], 元素的值默認(rèn)都是 false;
for的遍歷方式和C一樣,這里介紹C#獨(dú)有的:foreach遍歷
foreach(數(shù)組數(shù)據(jù)類型 臨時(shí)變量 in 數(shù)組名)
{
Console.WriteLine(臨時(shí)變量);
}
十一、數(shù)組之內(nèi)存結(jié)構(gòu)
1.值類型與引用類型
值類型
int,float,double,bool,char
內(nèi)存:值類型的值存儲(chǔ)在內(nèi)存的棧中
演示:int 類型變量間傳值 int a = 10; int b = a;
注意:這個(gè)時(shí)候單獨(dú)修改 b 的值,a 的值不會(huì)發(fā)生改變,這種傳遞叫做值傳遞。
這個(gè)時(shí)候變量之間的傳遞就是拷貝一個(gè)具體的值給對(duì)方。
引用類型
數(shù)組,字符串
內(nèi)存:引用類型的值存儲(chǔ)在內(nèi)存的堆中
演示:int 數(shù)組類型變量間傳值 int[] intA = new int[]{00,111,222,444};
int[] intB = intA;
注意:這個(gè)時(shí)候單獨(dú)修改 intB 中元素的值,intA 的值是會(huì)發(fā)生改變,這種傳遞
叫做引用傳遞。
這個(gè)時(shí)候變量之間的傳遞就是拷貝一個(gè)地址給對(duì)方。
2.數(shù)組的內(nèi)存結(jié)構(gòu)
數(shù)組在內(nèi)存中是一塊連續(xù)的存儲(chǔ)空間存儲(chǔ)的。
最低的地址對(duì)應(yīng)第一個(gè)元素,最高的地址對(duì)應(yīng)最后一個(gè)元素。
十二、數(shù)組之二維數(shù)組
1.二維數(shù)組基本語法
1.聲明與初始化
聲 明:數(shù)據(jù)類型[,] 數(shù)組名;
初始化:數(shù)組名 = new 數(shù)據(jù)類型[行數(shù),列數(shù)];
聲明,初始化二合一格式:
數(shù)據(jù)類型[,] 數(shù)組名 = new 數(shù)據(jù)類型[行數(shù),列數(shù)];
2.賦值與取值
賦值:數(shù)組名[下標(biāo),下標(biāo)] = 值;
取值:數(shù)組名[下標(biāo),下標(biāo)];
3.聲明初始化賦值三合一:
數(shù)據(jù)類型[,] 數(shù)組名 = new 數(shù)據(jù)類型[,] { {0,0,0,0,0,0,0,0,0,0},{1,1,1,1,1,1,1,1,1,1} };
2.二維數(shù)組的遍歷
for 循環(huán)嵌套
數(shù)組名.GetLength(軸向下標(biāo)); //可以獲取某個(gè)軸向的元素個(gè)數(shù)。
int[,] a = new int[3,4] {{0,0,0,0},{1,1,1,1},{2,2,2,2} };
for (int i = 0; i < a.GetLength(0); i++)
{
for(int j = 0;j < a.GetLength(1); j++)
{
Console.WriteLine(a[i, j]);
}
}
}
十三、函數(shù)
這里概念不再贅述了。。。
函數(shù)的聲明與調(diào)用
1.Pascal 命名法
帕斯卡命名規(guī)范,要求每個(gè)單詞的首字母都要大寫,其余字母小寫。
用途:多用于給類或者函數(shù)(方法)命名。
例如:ReadLine,ReadKey,ToDouble,ToInt32
2.函數(shù)的聲明(語法)
static 返回值類型 函數(shù)名([參數(shù)列表])
{
函數(shù)代碼體;
}
說明:
static:靜態(tài)標(biāo)識(shí)符;
返回值類型:如果不需要返回值就寫 void,就是無返回值的意思;
函數(shù)名:當(dāng)前功能函數(shù)的名字,要符合 Pascal 命名規(guī)范;
參數(shù)列表:如果不需要參數(shù),小括號(hào)中可以直接留空;
如果需要參數(shù),要以:參數(shù)類型 參數(shù)名 的形式書寫;
函數(shù)的調(diào)用:函數(shù)名([實(shí)際參數(shù)]);
注意:如果函數(shù)只聲明不調(diào)用,則函數(shù)中的代碼不會(huì)被執(zhí)行。
函數(shù)的參數(shù)與返回值:不再贅述。
函數(shù)重載
概念:函數(shù)的名稱相同,但是參數(shù)列表不同。調(diào)用該函數(shù)的時(shí)候,會(huì)根據(jù)不用的參數(shù),自動(dòng)選擇合適的函數(shù)重載形式。
參數(shù)不同的情況
①如果參數(shù)的個(gè)數(shù)相同,那么參數(shù)的類型就不能相同;
②如果參數(shù)的類型相同,那么參數(shù)的個(gè)數(shù)就不能相同。
注意:函數(shù)的返回值和重載沒有關(guān)系
ref參數(shù)
1.作用
將一個(gè)變量傳入一個(gè)函數(shù)中進(jìn)行“處理”,“處理”完成后,再將“處理”后的值帶出函數(shù)。
2.要求
函數(shù)外必須為變量賦值,而函數(shù)內(nèi)可以不賦值。
3.語法
形參和實(shí)參前面都要加 ref 關(guān)鍵字。
例如:Add(ref num); static void Add(ref int num);
out 參數(shù)
一個(gè)函數(shù)中如果返回多個(gè)不同類型的值,就需要用到 out 參數(shù)。
2.要求
函數(shù)外可以不為變量賦值,而函數(shù)內(nèi)必須為其賦值。
3.語法
形參和實(shí)參前面都要加 out 關(guān)鍵字。
例如:
Number(a,b, out max, out min);
static void Number(int a, int b, out int max, out int min);
?
本文摘自 :https://blog.51cto.com/u