c sharp學習筆記1
Console.WriteLine("hello word");//此函式為標準輸出,在C sharp裡為列印輸出
string s = Console.ReadLine();//宣告s為string型的變數,把使用者輸入的字串賦值給s變數 console.readline()相當於標準輸入
Console.WriteLine(s);//把游標停留在函式上可以看到函式的返回值如:(string value)
Console.ReadKey();//此函式為按下一個按鍵後退出 把KEY理解為按鍵
int i ;//宣告一個整數型變數i
// 單行註釋(單行註釋法) 註釋符中間不能加空格
/* 表示註釋開始 (多行註釋法)註釋符中間不能加空格
*/ 表示註釋結束 (多行註釋法)註釋符中間不能加空格
Console.WriteLine(i1+"+"+i2+"="+(i1+i2)); //括號內優先!
Console.WriteLine("{0}+{1}={2}", i1, i2, i1 + i2);//{}內為佔位符,意思代表i1佔位0,i2佔位1,i1+i2佔位2
佔位符為通用型,佔位符從0開始順序就是writeline第二個引數開始的順序
C#資料型別
int 整數型 如:1 2 3 不用引號
string 字元型 如:我愛你 雙引號
char 字元型 如:a b c 單引號
bool 邏輯型 如: true false 真和假
C#變數名命名規則 (這也是類和函式的命名規則)
C#中是可以用中文做變數名和類名以及函式名的! (儘量不用中文做變數名以及函式名類名,效率低下)
必須以下劃線或者字母開頭命名其後的字元可以是任意個數字,下劃線,字母!建議變數名用小寫字母
不能全部(全稱)使用c#的關鍵字,如:class namespace new vold等,判斷方式:VS中亮藍色的為關鍵字
C#變數命名
可以連續宣告幾個變數如:int i1,i2,i3;
可以宣告時就賦值 如:int i1=20;
也可以宣告變數不賦值 如:int i1;
區域性變數用之前必須要賦初值 如:i1=20;
C#運算子
+(加) -(減) *(乘) /(除) %(求餘數)
+可以用作字串連結,其他運算子不可以!
++(自增每次加1),--(自減每次減1)
運算優先順序為:先乘除後加減,不用死記,括號才是王道
括號優先順序:最內側的括號先運算,依次由內而外!
變數可以和字面量(賦值了的變數)混合運算,如:int i1=10; int i2=i1+10;console.writeline(i2);
C#賦值運算
讓左邊變數等於右邊的計算結果!
+= -= *= /= 如:i+=2; i-=2; i*=2; i/=2; 分別解釋為:i=i+2; i=i-2; i=i*2; i=i/2;
C#布林運算(bool 邏輯型)
相等判斷:== 是否相等 如書寫程式碼:int i=20; console.writeline("{0}",i==1); 則輸出false(假)!
int i=30; console.writeline("{0}",i=1); 說明:c#中賦值表示式也有值,它的值表示為賦值後變數的值!也就是輸出1
不等判斷:!= 是否不等於 如書寫程式碼: int i=20;console.writeline("{0}",i!=1); 則輸出true (真) !
大小比較:>大於,<小於,>=大於或等於,<=小於或等於
取反:!
組合運算:&& 且,||或 說明:&&且為兩邊都為true(真)時才為true(真),||或為兩邊有一邊為true(真)時就為true(真)
C#if語句 bool(邏輯型)
注意事項:if語句後面不用加分號;
如果if語句內只有一行程式碼,則要不要大括號都是一樣的執行效果
所以哪怕if語句只有一行程式碼,也要加大括號,養成好習慣!!!
一定要測試邊界條件(負數,長文字,長數字,不常用字元,中文等異常情況)
if(i>1) 說明:如果i大於1就執行大括號內的程式碼類似易語言裡的如果真!
{
}
if(i>1) 說明:如果i大於1 則執行第一個大括號內程式碼,如果不大於1,則執行第二個大括號內程式碼 類似易語言裡的如果!
}
}
else
{
}
if(i>1) 說明:如果i大於1執行第一個大括號,如果i<1則執行第二個大括號,如果i既不大於1也不小於1則執行第三大括號
{ 類似易語言裡的判斷
}
else if(i<1)
{
}
else
{
}
if語句的迴圈巢狀
if(i>1&&i<1||i=1) 說明:如果i大於1且i小於1或i=1就執行大括號內程式碼
{
}
C#資料型別轉換
convert.toint32(); //將字串轉換到整數
convert.tostring();//將整數轉換到字串
int i1 = Convert.ToInt32(Console.ReadLine());//宣告i1變數,使用者輸入的值直接轉換為整數型存到i1變數
C#轉義符
雙引號 /"
換行符 /n
反斜線 //
多個反斜線 在"////" 在前面加@(@"////")就不會被認為是轉義符
@只針對轉義符/有作用!
/轉義符只針對在程式碼中直接寫出來的字串有作用,對於從程式中讀取出來的沒有問題
Console.WriteLine("/"ab/"");//輸出“ab”
Console.WriteLine("a/nb");//輸出換行的ab
Console.WriteLine("//"); //輸出1個/
Console.WriteLine(@"////");//輸出4個////
字串加引號 "/"ab/"" 也就是說字串型別前後加引號的話要用/" 當轉義字元!
為什麼要用轉義符,因為編譯器預設是遇到"為字串開始,再遇到"為字串結束的!
C#語法
從上到下依次執行程式碼
大小寫敏感(區分大小寫)
函式引數用()包圍
兩句程式碼之間用;分號分割(易錯,全形問題)
註釋:單行註釋,多行註釋
C#變數
宣告變數的方式:型別 變數名;
變數的型別:不同的型別放不同的資料!
變數的作用域在{}括號內,而在{}內宣告的變數 括號外是用不了的
C#除錯
可在程式碼左邊行號左邊點選左鍵來標記斷點,程式執行到斷點可把游標移動到變數上進行檢視當前變數的值
C#退出
return; 是執行到return;時就退出整個函式(main),而控制檯一旦main退出就退出整個視窗了
C#迴圈的中斷
break; 立即終止整個迴圈 跳出迴圈
continue; 立即終止當前迴圈步驟,進行下一次迴圈步驟
C#迴圈while
語法為(如下)判斷迴圈首
while(i<100) //判斷i小於100為true則迴圈,也就是括號內判斷為真true則迴圈,false假則終止
{
console.writeline("{0}",i++);
}
迴圈判斷首(如下)
do //先進行迴圈一次,再進行判斷
{
console.writeline("{0}",i++);
}
while(i<100);
C# switch分支判斷,case以及default和break的使用
注意:如兩個case下面執行的語句相同則可以合併為(如下)
case 1:
case 2:
console.writeline("這是1和2");
break;
程式碼示例如下:
console.writeline("請輸入一個數");//提示使用者輸入一個整數
int i=console.readline(); //使用者輸入一個整數存到整數型變數i中
switch(i)
{
case 1://字串形式為case ("1"): 注意case後面跟的是冒號不是分號,且case比較的值只能是字面值,也就是數字和字串!表示式不可!
console.writeline("這是1");
break; //跳到下一個判斷
case 2:
console.writeline("這是2");
default: //defaule否則!
console.writeline("請輸入數字");
}
C#除錯
可在程式碼左邊行號左邊點選左鍵來標記斷點,程式執行到斷點可把游標移動到變數上進行檢視當前變數的值
C#退出
return; 是執行到return;時就退出整個函式(main),而控制檯一旦main退出就退出整個視窗了
C#迴圈的中斷
break; 立即終止整個迴圈 跳出迴圈
continue; 立即終止當前迴圈步驟,進行下一次迴圈步驟
C# for迴圈 程式碼示例如下:
for(i=1;i<10;i++)
{
console.writeline("hello word");
}
for(int i=100;i<=0;i--)
{
console.writeline("i");
}
for(code1;code2;code3)
解釋:code1:迴圈的初始化程式碼,只在迴圈開始之前執行一次;code2:bool型別的表示式,每次迴圈完成後都判斷一下是否為true,只有為true才會進行下一次迴圈;code3:在每次迴圈之後執行一次。
for的三段都可以省略,但是不能丟“;”
break; continue永陽可以應用於for。
for和while程式碼之間都可以互相轉換,究竟用哪種方式則取決於一些慣用用法和個人習慣,不不用記,程式碼寫多了自然就有感覺
C# 型別轉換cast (轉換)
把源型別複製給目標型別,兩個型別不一致的時候會發生型別轉換,a=b,b是源,a是目標
隱式轉換:當目標型別一定能滿足源型別轉換過去後的要求的話就是隱式轉換;
顯式轉換:如果當目標型別不一定能滿足源型別轉換過去後的要求的話就需要顯示轉換(程式設計師自己負責)。
顯示轉換程式碼示例為:int i=255; byte b=(byte)i;
隱式轉換程式碼示例為:byte b=255;int i=convert.toint32(b);
強制型別轉換隻能對應同一型別,如byte和int都是儲存數字的則可以相互轉換,但是string和int不是同一型別則不可以~因為一個是字串型別一個是數字型別
C# 型別轉換convert (轉變)
convert.toint32();轉換到int型別
convert.tostring();轉換到string型別
C# 列舉
列舉要宣告在程式最上面的class上 程式碼示例為:
enum boy{男,女,二椅子}; enum是列舉宣告,boy是列舉的型別名稱, 男女二椅子則為列舉成員
引用列舉成員程式碼示例為:boy b=boy.男; 依次為:列舉名稱,宣告的變數=列舉名稱內的列舉成員.
列舉只能為確定數量,確定的幾個值如:東南西北,男女,冷熱等!廣泛的數量不適用於列舉
C# 陣列
C#中陣列從0開始,而易語言則從1開始 要區分開
取陣列成員數的函式為:value.length
宣告陣列的方法為:在宣告的型別後加[]則為該型別的陣列形式 程式碼示例:string[] b={"1","2","3"};
自定義陣列的長度,程式碼示例為:string[] s = new string[5];
C#foreach迴圈,陣列迴圈
語法示例:
foreach和for迴圈的區別在於,for迴圈可以隔一個遍歷一次,而foreach是不能隔的!
string[] names={a,b,c};
foreach(string name in names) //這裡解釋為 定義一個name的string型的變數,然後把names陣列的每個值放到name變數裡遍歷出來
{
console.writeline("我的名字{0}",name);
}
C#函式
函式和類的名字都要大寫開頭
函式就是將一堆程式碼進行重用的一種機制,函式就是一段程式碼,這段程式碼可能有輸入的值,可能會返回值。
一個函式就像一個專門做這件事的人,我們呼叫它來做一些事情,它可能需要我們提供一些資料給它,它
執行完成後可能會有一些執行結果給我們。要求的資料就叫引數,返回的執行結果就是返回值。
console.readline就是一個有返回結果的函式;
console.writeline("hello");就是一個有執行引數的函式,只有告訴writeline被列印的資料它才能知道
如何列印;
int i-convert.toint32("22");則是一個既有引數又有返回值的函式。
有了函式寫程式碼就像拼積木,C#中的各種各樣的技術其實就是通過for,if等這些基礎的語法將不同的函式
按照一定的邏輯組織起來。
寫函式 程式碼示例如下:
static int readint() //解釋:static不用管,int是返回值型別,readint是函式名稱,()必須有!
{
string s=console.readline();//使用者輸入的數字存到S變數
return convert.toint32(s); //轉換S變數的資料到整數,退出函式返回一個值,return後要返回的資料型別必須是宣告的型別
}
引用函式 程式碼示例如下:
int i=readint();
console.writeline(i);
注意,如果函式沒有返回值,則再返回值型別寫上void 程式碼示例如下:
static void sayhello()
{
console.writeline("hello");
return;//如果沒有返回值則直接return就可以了 不用後面加返回的資料
}
程式碼練習:整數型返回值(比較兩個數的大小)
函式程式碼示例:
static int max(int i1,int i2)
{
if(i1>i2)
{
return i1;
}
return i2;
}
呼叫以上函式
console.writeline(max(20,40));
程式碼聯絡:整數型陣列 (計算陣列內所有引數的和)
函式程式碼示例:
static int sum(int[] values)
{
int sum=0;
foreach(int i in values)
{
sum=sum+i;
}
return sum;
}
呼叫以上函式
int values={2,3,5,6,7};
int sum=sum(values);
console.writeline(sum);
確定函式引數的原則:自己能確定的資料自己內部解決,自己確定不了的資料通過引數傳遞。
C#可變引數
可變引數陣列必須是最後一個params
程式碼示例如下:
static void SayHello(string name,params string[] names)
{
console.writeline("我的名字是{0}",name);
foreach(string s int names)
{
console.writeline("我的暱稱是{0}",s)
}
}
呼叫以上函式:
SayHello("2b","1b","3b")
C#函式過載
也就是函式的名字可以重複,但是引數型別不能一樣(不嚴謹不推薦使用)
C#字串的處理
字串的不可變性指的是記憶體中的字串不可變,而不是變數不可變。
C#中單個字元用單引號包含就是char型別,('a'),單引號中有且只能放一個字元。
char c1='a';單引號內必須為一個字母,且不能為空
在C#中對文字等處理的取文字長度函式為length, 示例:s.length
string型別可以看做是char型別的只讀陣列,char c=s[1];例子:遍歷輸出string中的每個元素。
C#中字串char有一個重要的特性:不可變性,字串一旦宣告就不再可以改變。所以只能通過索引
來讀取指定位置的char,不能對指定位置的char進行修改。
如果要對char進行修改,那麼就必須建立一個新的字串,用s.tochararray()方法得到字串的char陣列,
對陣列進行修改後,呼叫new string(char[])這個建構函式(暫時不用細研究)來建立char陣列的字串。
一旦字串被建立,那麼char陣列的修改也不會造成字串的變化。程式碼示例如下:
string s1="hello"; //宣告一個字串賦值內容為hello
char[] chars=s1.tochararray();//宣告個char型陣列把s1的各個字元賦值到char陣列內
chars[0]='a';//chars陣列第0個位置修改為a
string s2=new string (chars);//宣告s2的字串變數。把chars修改後的資料傳到s2
console.writeline(s2);//輸出s2
C#string類常用函式
tolower(),得到字串的小寫形式。程式碼示例 string s="ABC";s=s.tolower();
注意字串是不可變的,所以這些函式都不會直接改變字串的內容,而是把修改後的字串的值通過函式返回值的形式返回
toupper(),得到字串的大寫形式;
trim(),去掉字串兩端的空白。
不區分大小寫的比較字元 程式碼示例如下:
bool b="abc.Equals("ABC,stringcomparison.ordinalignorecase);
console.writeline(b);
C#字串的分割
函式split是多個引數的分割函式!過載函式
程式碼示例為:
string s="aaa,bbb,ccc,ddd";
string[] strs=s.split(',');//括號內為分隔符
foreach(string item in s)
{
console.writeline(item);
}