最近有機會給人講C#,初學者容易犯的一些錯誤,也許我們這些老鳥平時也會忽略。有時間就會整理一些放上來。
1. @的用法:
在很多語言之中,加@在變量前常常是指的取地址,C#中的@用在string變量前面,指的是忽略字符串中所有的轉義符“\”。如:
Console.Writeln( "C:\\downloads\\test.rar" );
與下面的語句相當:
Console.Writeln( @"C:\downloads\test.rar" );
2. Convert.to* 與 var.to* 用法區別
以上兩個函數都是顯式地進行變量類型轉換,一般用於無法隱式轉換的變量,用法舉例如下,注意它們的區別。
int inText = 1999;
string stText = "";
stText = Convert.ToString( inText ); // Convert的語法示例
stText = inText.ToString(); // 注意變量直接To新類型的用法,後面的()是不可省的,這和有些語言不同
Console.WriteLine( "This is convert test string: " + stText );
3. C#的switch和C++的區別
語法:
switch(var)
{
case varvalue1:
<語句組>
break;
case varvalue2:
<語句組>
break;
......
case varvalueN:
<語句組>
break;
default: // default是可以省略的
<語句組>
break;
}
C#和C++的switch語法相同,但C++允許case語句向下貫穿,即省略break時,將繼續執行下面的case語句組,而C#中禁止該用法。在C#的switch語句中,break是不能少的,但可以用goto case varvalue的方式跳過它,直接執行下面的case語句組。舉例如下(可能例子不怎麼符合邏輯,只是為了說明C#在switch中如何貫穿):
Console.WriteLine( "This is convert test string: " + stText );
int var1 = Convert.ToInt32( Console.ReadLine() );
switch( var1 )
{
case 70:
Console.WriteLine( "The number is 70 !\n" );
goto case 80; // 把case 80當成goto的label
break;
case 80:
Console.WriteLine( "The number is 80 !\n", var1 );
goto default;
break;
default:
Console.WriteLine( "The number is not 70 or 80 !\n");
break;
}