大三開學好幾周了,到現在才認真看有關c#的書,以下是我從中學習到的東西,希望能與各位分享:
1、有關變數的命名規則:
目前普遍使用兩種命名方法:①PascalCase: 其規定每個單詞的首字母均大寫
② Camel case :其規定除第一個單詞外,其餘的每個單詞的首字母均大寫
目前那種以底線開頭的已經過時了。
2、字串的字面值
當字串中含有逸出字元時,應使用逐字地的指定的字串
如"this address is c:\\my\\wtq"就等價於@"this address is C:\my\wtq"
3、變數中的聲明賦值
在c#中定義變數時,使用之前一定要對其進行賦值,不然會報告編譯錯誤。
3.3.1
①使用者輸入
string UserName=Console.ReadLine();此語句返回的是字串
②類型轉換
double FirstNum = Convert.ToDouble(Console.ReadLine());
3.3.2賦值運算子
"+"以及"+="可以用於字串之間的連結。
3.4命名空間
①在.Net中提供應用程式代碼容器的方式
②也用作.NetFramework中給項分類的一種方式。大多數項都是類型定義
4 、流程式控制制
4.1 布爾邏輯
Bool var1,var2,var3;
var1 = var2 ==var3;
var1 = var2 ==ture;
Bool類型的運算只能進行==或者!=運算
&&與& ||與|在進行運行時,其基本運算結果相同,但執行效能不同。
執行a&&b運算式時,當a為假時,就不用去判斷b的值是否為真還是假,這時候整個運算式的值就是假。這種就可以節省時間了,而 執行a&b運算式時,運算元a與b都必須進行判斷真假。這樣效率就不是很高了。
執行a||b運算式時,當a為真時,就不用去判斷b的值是否為真還是假,這時候整個運算式的值就是真。這種就可以節省時間了,而 執行a|b運算式時,運算元a與b都必須進行判斷真假。這樣效率就不是很高了。
4.2 goto 語句
使用方法:
Lable:
.
.
.
goto Lable;
goto語句盡量少用,如果對於程式邏輯比較簡單的時候,使用goto語句是比較高效的,但是,如果程式較為複雜時,整個程式的可讀性就不是很好了,讓會使編程更加困難。
4.3
分支包含以下三種情況:
①條件陳述式:a?b :c;
②if語句
③switch語句
對於①的條件陳述式它是有傳回值的
如string d=a?b:c這是a為真,就把b賦給d;
對於②的if語句它是沒有返回結果的,它只有TRUE或者false
盡量使用if()
{
}
else{
}
如果條件較多的時候,可以使用
if()
.{
}
else if()
{
}
else if()
{
}
對於③switch(a) 。a可以是字面值,或者是常量
定義常量時用const Int inttwo = 2;
之類的東西代表語句;
switch()
{
case a: ;break\return;
case b: ;break\return;
case c: ;break\return;
defaule: ;break\rturn;
}
4.4迴圈
do{
} while ()
while()
{
}
for(int = i;i<10;i++)
此變數i只能在迴圈體中使用,不能用於迴圈以外的語句。
注意:goto從外部進入迴圈是非法的。
4.5程式的穩健性(這隻是其中的一個例子):
do{
a=Console.ReadLine();
if(a<b)
Console.WriteLine("你輸入的資料有誤,請重新輸入");
} while(a<b);
完整的程式:
static void Main(string[] args)
{
int FirstNum, SecondNun = 20;
do
{
FirstNum =Convert.ToInt32( Console.ReadLine());
if(FirstNum<SecondNun)
Console.WriteLine("the number your enter is error.\nplease enter
another number");
}while(FirstNum<SecondNun);
運行結果如下:
5.變數的更多內容
5.11 隱式轉 一般將位元組數較小的資料類型轉換為位元組數較大的資料類型(當然也可以相等 例如:ushort與char(等位元組) int與double (小->大)
5.12 顯式轉換
顯式轉換髮生的情況一般是將位元組數比較大的類型轉換為位元組數較小的類型
例如: byte destinationByte;
short sourceShort
destinationByte=(byte)sourceShort;
注意:在這種情況下賦值可能會導致結果溢出;
例如:sourceShort=281;
如果執行此句 destinationByte=(byte)sourceShort;將會使destinationByte的值變為25
因為:281=100011001
25= 00011001
255=01111111
在這時候我們可以採取相應的措施來解決
比如:checked(expression)
或者unchecked(expression)
destinationByte = checked((byte)sourceShort)
另一種方法是修改配置應用程式:
①點擊方案總管
進行相應的設定
再點擊右邊的進階,按操作
5.1.3使用convert命令進行顯式轉換
int varInt;
short varShort = 10 ;
float varFloat = 20;
varInt = varShort * (short)varFloat; //此句所得的結果就是類型為int的數值,varInt若是其他類型,則將報錯。
varDouble = Convert.ToDouble("125");
Console.WriteLine(varInt);
5.2複雜的變數類型 ①枚舉類型 形式:enum Typename{Value1,Value2,Value3, . . Valuen}此類型預設情況下使用一個int類型儲存 如果想改變這種儲存就可以換這種定義:enum Typename :underlyingType(int){Value1,Value2,Value3, . . Valuen}經常出線這種現象enum Typename{Value1=actualval,Value2,Value3=value1, Value4, . Valuen}此時value2=value4 還有可能出現這種迂迴情況容易導致錯誤enum{Value1=value2Value2=value1}枚舉類型定義一般放在命名空間中namespace test{ enum Direction { north, south, east, west } class Program {}結構②Struct Typename{ }③數組的聲明:(1)一維數組:定義:如:int [] varInt;初始化的情況:Const int varInt=5;int [] arrary = {5,3,9,4,3};int [] arrary = new int [5];預設每個元素都是0.int [] arrary = new int [varInt]; 預設每個元素都是0. 定義時不可以這樣寫: Int [] array; Array = new int [5]; 因為定義數組時,必須分配其大小。 給數組賦初值時,還有一點要注意的數組大小必須與元素個數相匹配 如: Int [] array = new int [5] {1,2,3,4,5}; Int [] array = new int [5] {1,2,3 };這是錯誤的還可以 foreach迴圈來讀取數組元素的值,但是不能修改。 與此相反,for迴圈即可讀取資訊,又可修改資訊foreach (int var in array) { Console.WriteLine(var); }(2)多維陣列定義:double [ , ] hillheight = new double [3,4];賦初值:double[ ,] hillheight = new double[2, 3] {{4,2,3},{4,5,6}};或者 double[ ,] hillheight = {{4,2,3},{4,5,6}};(3)數組的數組(每一行的元素個數可以不一樣,嚴格的來說,就是多維陣列的一種 ) 賦初值:① int[][] var2; var2 = new int[2][]; var2[0] = new int[4]; var2[1] = new int[3]; var2[0][1] = 2 ; //這裡與多維陣列不同,因為多維陣列時var2[1,2] ②int[][] var2 = {new int[1] {2},new int [2] {3,4} };③int[][] var2; var2 =new int [2][] {new int[1] {2},new int [2] {3,4} };同時也可用foreach讀取數組的數組的值,方法是:使用嵌套的foreach()foreach (int[] vararray in var2) { foreach (int var3 in vararray) { Console.WriteLine(var3); } }5.5字串處理①字串string可以轉換成char數組例如:string MyString = "A string"; char[] MyChar = MyString.ToCharArray(); foreach (char ch in MyChar) { Console.WriteLine(ch); }Console.WriteLine(MyChar.Length);//輸出數組的大小。②將字串轉換為小寫例如:string userResponse = Console.ReadLine(); if (userResponse.ToLower() == "wtq") { Console.WriteLine("你很棒");}③將字串轉換為大寫例如: string userResponse = Console.ReadLine(); if (userResponse.ToUpper() == "WTQ") { Console.WriteLine("你很棒"); }④刪除額外的空格例如:string userResponse = Console.ReadLine(); userResponse = userResponse.Trim(); if (userResponse.ToUpper() == "WTQ") { Console.WriteLine("你很棒"); }⑤刪除額外的字元例如:char[] trimChars = { ' ','t','q'}; string userResponse = Console.ReadLine(); userResponse = userResponse.Trim(trimChars); if (userResponse == "w") { Console.WriteLine("你很棒"); } ⑥刪除字串的前面或後面的空格 <string>.TrimStart(),<string>.TrimEnd 例如:string userResponse = Console.ReadLine(); userResponse = userResponse.TrimStart(); if (userResponse == "w") { Console.WriteLine("你很棒"); } ⑦<string>.PadLeft和<string>.PadRight分別在字串的左邊或右邊添加空格例如:string MyString = "Aligned"; MyString = MyString.PadLeft(10); Console.WriteLine(MyString); } 注意:也可以在字串前加其他字元。例如:string MyString = "Aligned"; MyString = MyString.PadLeft(10,'+'); Console.WriteLine(MyString); ⑧分割字串<string>.Split()例如:string MyString = "this is a test"; char [] Separator = {' ','i'}; string[] MyWords; MyWords = MyString.Split(Separator); foreach (string word in MyWords) { Console.WriteLine(word); }⑨將字串倒序 方法一: String text =”wtqwtqwtq”;char[] cArray = text.ToCharArray();
string reverse = String.Empty;//相當於給reverse賦初值
for (int i = cArray.Length - 1; i > -1; i--)
{
reverse += cArray[i];
}console.WriteLine(reverse);方法二:string text = "wtqwtqwtq"; char[] charArray = text.ToCharArray(); Array.Reverse(charArray); Console.WriteLine( charArray );