C#學習第三天

來源:互聯網
上載者:User

標籤:

     經過這幾天的學習,真的有點覺得以前C學的太不好現在學C#也不順暢,雖然很多東西都似曾相識,但是就是還得看好幾遍才能記得住,而且現在都是簡單的東西,還沒有看到重載等稍微痛點的地方。應該好好努力了,昨天忙完所有事情都十一點多了,還被學姐罵的不行不行的,就早點休息了,真是應該每天都能看一點的,這樣還能記得深刻一點,每天都能學點東西還能有點成就感。據說養成一個習慣需要至少23天,我真的還想試一下是不是真的,其實寫部落格的目的就是督促一下自己,每天給自己來點壓力,不要像大一的時候一樣一事無成,成天忙那些所謂的學生工作,付出的太少太少,希望找到高中時的狀態,周圍的環境都不是理由,時間緊也不是理由,現在唯一讓我感到很煩的就是導員的博士論文,我學了好幾年的理科,大學學的還是工科,成天還要寫思想政治教育的稿子,想想都有點不值得,不過只能在自己的部落格裡吐槽一下了,畢竟要導員幫忙的地方太多了。這樣是不是太勢利了呢?我也常常在想,直接撂挑子不幹算了,愛咋咋地。但是想想已經付出了那麼多,到今年12月份也就解放了,也就忍了,真心希望以後不會有這種奇葩的任務了,自己做點自己想做的、想學的,摞摞代碼、學學單片機、搞搞嵌入式就挺好。不說廢話了,還是說說今天的學習吧!突然好多感慨。。。但是,我的部落格我做主,哈哈哈哈。

     今天自己看了點逸出字元那塊,和C差不多,基本一樣,也就不贅述了,就是多了個@的那個功能,變數名的第一個字元必須是字母、底線或數字。變數的命名方面,主要有兩種主流的命名方式,一種是camelCase方式,舉幾個例子就明白了,age,firstName,timeOfDeath(這個名字咋這麼嚇人呢),就是第一個字母不大寫,其他出現的單詞首字母都要大寫;還有一種是PascalCase方式,看名字就能看得出來,比上一個命名方法多了首字母大寫,好像我們老師以前講C語言的時候說過一種匈牙利命名法和第二種挺像的,不知道是不是一種。對於這兩種命名方式,官方給出的說法是,對於簡單的變數,用第一種比較好,對於複雜的,就用第二種,不過個人還是比較傾向第二種。

     就下來就說下@的用法了,可以有效簡化代碼,減少逸出字元的使用,使代碼更加簡潔。在這裡舉個例子應該就能很明白的說清楚了,不用@的話對於以下字串“C:\\MyDir\\Myfile.doc”就可以簡化成@“C:\Mydir\Myfile.doc”當然使用這種方法也有意外,比如說在字串裡本身存在雙引號的話還是必須要轉義,以免結束字串。接下來再說一下一個基本的東西,資料類型的轉換:隱式轉換和顯式轉換,所謂隱式轉換,就是悄悄的轉換,不需要做任何工作,不需要任何的代碼,這裡就不多說了,以後應該不會在這地方卡殼。重要的是顯式轉換,在明確要求編譯器把數實值型別進行轉換時,就是在執行顯式轉換。簡單的顯示轉換格式是<(destinationType)sourceType>,這樣就將sourceVal值的資料類型就變成了前面括弧裡的情況。代碼還是要摞起來

byte destinationVar;

short sourceVar = 7;

destinationVal=(byte)sourceVar ;

Console.WriteLine("sourceVar  val:{0}",sourceVar );

Console.WriteLine("destinationVar  val:{0}",destinationVar );

就可以得到

sourceVar  val:7

destinationVar  val::7

     雖然代碼很簡單,還是要敲出來,印象能深刻一些,畢竟在打基礎。但是如果資料過大就是有溢出的情況,比如說上例中的short類型值是281,結果就會是25,進行了迴圈,因為byte類型最多能夠表達的數就是255.所以在資料類型轉換的時候要注意不同資料類型的範圍大小。為了防止溢出,可以添加check函數來進行溢出檢查,如果溢出就會有程式崩潰的提示。除了這一種方式,還有另一種稍微複雜一點的轉換,運用convert進行轉換。不說其他,直接上代碼:

static void Main(string[] args)        //和java真他媽像

{

  short shortResult,shortVal=4;

  int integerVal=67;

  long longResult;

  float floatVal=10.5F;

  double doubleResult,doubleVal=99.999;

  string stringResult,stringVal="17";

  bool boolVal=true;

 

  Console.WriteLine("Variable Conversion Examples\n");

 

  doubleResult=floatVal*shortVal;

  Console.WriteLine("Implicit,->double:{0}*{1}->{2}",floatVal,shortVal,doubleResult);

 

  shortResult=(short)floatVal;

  Console.WriteLine("Explicit,->short:{0}->{1}",floatVal,shortResult);

 

  stringResult=Convert.ToString(boolVal)+Convert.ToString(doubleVal);

  Console.Write("Explicit,->string:\"{0}\"+\"{1}\"->{2}",boolVal,doubleVal,stringResult);

 

  longResult=integerVal+Conver.ToInt64(stringVal);

  Console.WriteLine("Mixed,   ->long:  {0}+{1}->{2}",integerVal,stringVal,longResult);

}

     碼完這段讓人吐血的代碼,好無聊,但是該練習的還是要練習,這點逃不了。

     接下來就說複雜的變數類型之一:枚舉。

     直接上代碼:

enum<typeName>      //定義枚舉

{

  <value1>

  <value2>

  ...

  <valuen>

}

<typeName><varName>;       //聲明新變數

<varName>=<typeName>.<value>;       //賦值

還可以添加類型:

enum<typeName> :<underlyingType>     //定義枚舉,並且在後面設定儲存類型

{

  <value1>

  <value2>

  ...

  <valuen>

}

     在預設情況下,每個值都會根據定義的順序自動賦給對應的基本類型值。也就是說,value1的值是0,value2的值是1等等。也可以重寫這個過程:

enum<typeName> :<underlyingType>     //定義枚舉,並且在後面設定儲存類型

{

  <value1>=<actualVal1>

  <value2>=<actualVal2>

  ...

  <valuen>=<actualValn>

}

     還可以使用一個值作為另一個枚舉值的基礎值,為多個枚舉指定相同的值:

enum<typeName> :<underlyingType>     //定義枚舉,並且在後面設定儲存類型

{

  <value1>=<actualVal1>

  <value2>=<value1>

  ...

  <valuen>=<actualValn>

}

沒有賦值的任何職都會自動獲得一個初始值,這裡使用的值是從比上一個明確聲明的值大1開始的序列。例如上例中<value3>的值是<value1>+1.

     以迴圈的方式賦值可能會產生錯誤,例如:

enum<typeName> :<underlyingType>     //定義枚舉,並且在後面設定儲存類型

{

  <value1>=<value2>

  <value2>=<value1>

}

枚舉的強制資料類型轉換:

     directionString=MyDirection.ToString();   等價於

   directionString=Convert.ToString(MyDirection);

其中MyDirection是枚舉類型的資料變數,directionString是string類型的資料變數。

把string轉換為枚舉值,有特定的命令Enum.Parse(),用法如下:

     (enumrationType)Enum.Parce(typeof(enumrationType),enumrationValueString);

具體的應用如下

     string myString="north";

  orientation myDirection=(orientation)Enum.Parse(typeof(orientation),myString);     //其中orientation為枚舉類型

剛才系統崩潰了,嚇死寶寶了,幸虧有自動儲存。。。。。

C#學習第三天

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.