<output id="qn6qe"></output>

    1. <output id="qn6qe"><tt id="qn6qe"></tt></output>
    2. <strike id="qn6qe"></strike>

      亚洲 日本 欧洲 欧美 视频,日韩中文字幕有码av,一本一道av中文字幕无码,国产线播放免费人成视频播放,人妻少妇偷人无码视频,日夜啪啪一区二区三区,国产尤物精品自在拍视频首页,久热这里只有精品12

      [畢業生的商業軟件開發之路]C#表達式以及判斷語法結構

      近期開始接觸到在校學生、高校實習生和畢業生,在此說一下筆者對這些徘徊在職場門口的學生一些建議,希望能給這些初學者進入軟件開發行業帶來一些幫助,使得畢業生能更順利的進入軟件開發公司開始職場生涯,人生來一個完美的轉彎。

      -------------------------------------------------------------------------------------

      表達式

      數學表達式

      C#的數學表達式支持加、減、乘、除和求模運算,這個和其他編程語言差不多。其支持的運算符如下表所示

      +

      加,例如“2 + 3,運算結果為5

      -

      減,例如“2-3”,運算結果為-1

      *

      乘,例如“2*3”,運算結果為6

      /

      除,例如“2/3”,運算結果為“0.66666”。

      %

      求模,例如“2%3”,運算結果為“2”。

      ++

      自增1,例如“int a = 2 ; a ++ ”,運算結果為“3”。

      --

      自減1,例如“int a = 2 ; a--”,運算結果為“1”。

      C#支持使用園括號來改變運算的優先級。

       

      邏輯表達式

      C#支持的邏輯表達式,和其他編程語言差不多,其支持的運算符如下表所示

      意義

      優先級

      語法

      邏輯反

      !

      等于

      == (兩個等于號,中間不能有空格)

      大于

      大于等于

      >=

      小于

      <

      小于等于

      <=

      不等于

      !=

      邏輯與

      &&

      邏輯或

      ||

       

       

      &&

      邏輯與,比如“BooleanValue1 && BooleanValue2,只有兩個條件都成立,這個表達式才成立。

      ||

      邏輯或,比如“BooleanValue1 || BooleanValue2,兩個條件中任意一個成立,則這個表達式就會成立。

      !

      邏輯反,比如“! BooleanValue”,若條件成立,則表達式不成立,若條件不成立,則表達式成立。

             C#支持使用園括號來改變運算的優先級。

      位運算表達式

      C#支持類似C語言的位運算。

      << 

      左位移,相當于乘以2的若干次方。比如“int a = 3 ; a <<2其效果等于“a = a * 2 * 2,運算結果為12 ;但左位移操作比乘法操作要快得多,若固定為乘上2的若干次方值時,盡量用左位移操作。

      >> 

      右位移,相當于除以2的若干次方,比如“int a = 100 ; a >>2,其效果等于“a = a / 4,運算結果為25;但右位移操作比除法操作要快得多,若固定為除以2的若干次方值時,盡量用右位移操作。

      &

      位與操作。

      |

      位或操作。

       

      執行結構

      C#采用的是類似CJAVA語言的執行結構,主要有。

      順序執行

      條件判斷

      C#中有多種條件判斷執行語句,主要有

      if 結構

      C#支持if條件判斷結構,使用很簡單,其演示代碼如下

      DateTime dtm = DateTime.Now;

      string b = null;

      if (dtm.Hour >= 12)

      {

          b = "下午";

      }

      else

      {

          b = "上午";

      }

      理論上這段代碼中的花括弧去掉,可以寫成如下,

      DateTime dtm = DateTime.Now;

      string b = null;

      if (dtm.Hour >= 12)

          b = "下午";

      else

          b = "上午";

      注意,在實踐中是不推薦這種寫法的,這種寫法雖然比較簡練些,但很可能制造出難于察覺的程序錯誤,還是必須老老實實的把花括號寫出來。

       

      在書寫if語句時,若邏輯表達式是復合的,包含了多個條件,則需要進換行。例如對于以下的代碼,if語句中包含了一個具有4個成員的復合邏輯表達式

      int NumberValue = 10;

      string StringValue = "123";

      char CharValue = 'z';

      double DoubleValue = 30;

       

      if ( NumberValue == 10 || StringValue == "123" || CharValue == 'z' || DoubleValue >= 20 )

      {

          Console.WriteLine("條件成立");

      }

      這不寫法不美觀,一條語句過長,推薦寫成如下樣式

      int NumberValue = 10;

      string StringValue = "123";

      char CharValue = 'z';

      double DoubleValue = 30;

       

      if ( NumberValue == 10

          || StringValue == "123"

          || CharValue == 'z'

          || DoubleValue >= 20 )

      {

          Console.WriteLine("條件成立");

      }

      另外如果判斷條件就是一個布爾值,理論上可以寫成如下代碼

      bool BooleanValue = true;

      if ( BooleanValue )

      {

          Console.WriteLine("條件成立");

      }

      但在實踐中,還是推薦寫成如下代碼

      bool BooleanValue = true;

      if ( BooleanValue == true )

      {

          Console.WriteLine("條件成立");

      }

      雖然上一種寫法比較簡短,但第二種寫法的可讀性更好。

      類似的,當判斷這個布爾值是否為false時,可以使用邏輯反運算符,其代碼如下

      bool BooleanValue = true;

      if ( ! BooleanValue )

      {

          Console.WriteLine("條件成立");

      }

      這種寫法的可讀性也不好,因為人們在快速的閱讀代碼中有可能將這個“!”字符漏掉,因此在實踐中,還是推薦寫成如下代碼

      bool BooleanValue = true;

      if ( BooleanValue == false )

      {

          Console.WriteLine("條件成立");

      }

       

      在實際編寫代碼中,代碼的可讀性比簡短要重要,優先考慮。筆者反對編寫簡短隱晦的代碼來炫耀技術,那跟孔乙己說“茴”字有4種寫法一樣不切實際。

      三元運算符

      C#中的三元運算符代碼結構為“ 判斷條件 ? 當判斷成立時的值 : 當判斷不成立時的值 ”,例如以下代碼演示了三元運算符

      DateTime dtm = DateTime.Now;

      string b = dtm.Hour >= 12 ? "下午" : "上午";

      在這段代碼中,若當前時間的小時數大于等于12,則獲得數值“下午”,否則獲得數值“上午”。

      這種三元運算符功能和if-else語句一樣,不過能更為簡短的方式實現功能。在很多情況下能減少代碼量,提高代碼的可讀性。不過三元運算符沒有什么擴展性,一次只能設置一個變量值。

      switch 結構

       

      C#中使用“if ( 判斷條件 ) 執行代碼 ; else 執行代碼”,比如以下代碼說明了作息狀態

      DateTime dtm = DateTime.Now;

      string state = null;

      switch (dtm.Hour)

      {

          case 6:

              {

                  state = "起床";

              }

              break;

          case 8:

              {

                  state = "吃早飯";

              }

              break;

          case 9:

              {

                  state = "上班";

              }

              break;

          case 12:

              {

                  state = "吃午飯";

              }

              break;

          case 13:

              {

                  state = "上班";

              }

              break;

          case 18:

              {

                  state = "下班";

              }

              break;

          case 22:

              {

                  state = "睡覺";

              }

              break;

      }

      Console.WriteLine(state);

      其中的 switch語句塊還可以寫成如下的緊湊樣式

      switch (dtm.Hour)

      {

          case 6: state = "起床"; break;

          case 8: state = "吃早飯"; break;

          case 9: state = "上班"; break;

          case 12: state = "吃午飯"; break;

          case 13: state = "上班"; break;

          case 18: state = "下班"; break;

          case 22: state = "睡覺"; break;

      }

      若使用if-else結構寫出這種語句,則可以寫成如下

      DateTime dtm = DateTime.Now;

      string state = null;

      if (dtm.Hour == 6)

      {

          state = "起床";

      }

      else if (dtm.Hour == 8)

      {

          state = "吃早飯";

      }

      else if (dtm.Hour == 9)

      {

          state = "上班";

      }

      else if (dtm.Hour == 12)

      {

          state = "吃午飯";

      }

      else if (dtm.Hour == 13)

      {

          state = "上班";

      }

      else if (dtm.Hour == 18)

      {

          state = "下班";

      }

      else if (dtm.Hour == 22)

      {

          state = "睡覺";

      }

      Console.WriteLine(state);

      可以看出對于多個常數的比較判斷,使用switch結構還是比較方便的,但在case語句中只能是常數,不能是邏輯表達式,這使得switch結構應用受到不小的限制。

      switch語句塊中可以不使用花括號,因為沒有添加花括號不會導致難于察覺的錯誤,但還是推薦若case-break結構中的功能代碼比較多時還是加花括號。[袁永福版權所有]

      C語言中,case結構如果不加上break關鍵字就可以貫穿執行到下一個case結構,但在C#中,case結構不能貫穿,必須添加break或者return關鍵字來結束case執行塊。

       

       

      循環結構

      C#中有多種循環結構,以下分別說明

      for 循環結構

      C#中,for循環結構寫法為“for( 初始化 ; 邏輯表達式 ; 累加處理 ) { 循環體 }”。例如以下代碼包含了一個for循環結構

      int count = 0;

      for (int index = 0; index < 100; index++)

      {

          count = count + index;

      }

      Console.WriteLine(count.ToString());

      理論上這段代碼可以寫成如下

      int count = 0;

      for (int index = 0; index < 100; index++)

          count = count + index;

      Console.WriteLine(count.ToString());

       

      但筆者推薦還是加上花括號,因為不加花括號很容易導致難于察覺的程序錯誤。

      在代碼“for( int index = 0 ; index < 100 ; index ++ )”中,關鍵字“for”說明開始進行了一個循環;“int index = 0是初始化這個循環,定義了一個累加變量;“index < 100是這個循環是否執行的邏輯表達式,若判斷成立則執行循環,否則立即退出循環;“index ++ ”是每次執行完一次循環體后執行的代碼,這里是將累加變量自增1。[袁永福版權所有]

      上面的for循環執行的步驟如下

          int count = 0;

          int index = 0;

          // 執行第1次循環

          if (index < 100)

          {

              count = count + index;

              index++;

          }

          else

          {

              goto EndFor;

          }

          // 執行第2次循環

          if (index < 100)

          {

              count = count + index;

              index++;

          }

          else

          {

              goto EndFor;

          }

          // 執行第3次循環

          if (index < 100)

          {

              count = count + index;

              index++;

          }

          else

          {

              goto EndFor;

          }

                 

          // 無窮盡的執行循環體

       

      EndFor:

          Console.WriteLine(count.ToString( ));

      注意,理論上說循環會無窮盡的執行下去,因此需要設置好退出循環的判斷條件,否則就容易出現死循環,導致死機。

      for循環是使用最為靈活的循環結構,在實踐中可以使用它寫成很多精致的代碼。

      在各種循環結構中,包括for循環,都可以使用關鍵字continue來跳過一些代碼直接進入下一次循環,使用關鍵字break來立即退出循環。若從套嵌了多層的循環跳出來則可以使用goto語句。

      foreach 循環結構

      foreach循環結構是一種針對列表類型的循環語法結構,其語法為“foreach( 類型名稱 變量名 in 列表變量名) { 循環體 }”,以下代碼演示了foreach的使用。

      string[ ] names = new string[100];

      foreach (string name in names)

      {

          Console.WriteLine(name);

      }

      foreach循環中,循環變量是只讀的,不能為它設置值,比如上面的foreach循環體重不能寫上“name = “張三”; ”這樣的代碼,但是for語句是可以的。

      foreach循環本質上是C#的一個語法封裝,上述這段代碼等效于如下代碼

      string[ ] names = new string[100];

      System.Collections.IEnumerator enumerator

          = ((System.Collections.IEnumerable)names).GetEnumerator();

      enumerator.Reset();

      while (enumerator.MoveNext())

      {

          string name = (string)enumerator.Current;

          Console.WriteLine(name);

      }

      因此任何類型只要實現了“System.Collections.IEnumerable”接口的類型就可以用于foreach循環結構。而且這段代碼中“enumerator.Current”是只讀的屬性,這就決定了foreach循環體內不能設置循環變量的值。[袁永福版權所有]

       

      while 循環結構

      C#執行while循環結構,其代碼結構為“while( 邏輯表達式 ) { 循環體 }”,例如上節的演示程序

      string[ ] names = new string[100];

      System.Collections.IEnumerator enumerator

          = ((System.Collections.IEnumerable)names).GetEnumerator();

      enumerator.Reset();

      while (enumerator.MoveNext())

      {

          string name = (string)enumerator.Current;

          Console.WriteLine(name);

      }

      就是一個while循環結構。這個循環等價于執行以下代碼

          // 執行第一次循環

          if (enumerator.MoveNext())

          {

              string name = (string)enumerator.Current;

              Console.WriteLine(name);

          }

          else

          {

              goto EndWhile;

          }

          // 執行第二次循環

          if (enumerator.MoveNext())

          {

              string name = (string)enumerator.Current;

              Console.WriteLine(name);

          }

          else

          {

              goto EndWhile;

          }

          // 執行第三次循環

          if (enumerator.MoveNext())

          {

              string name = (string)enumerator.Current;

              Console.WriteLine(name);

          }

          else

          {

              goto EndWhile;

          }

          // 無窮盡的執行循環

      EndWhile:

       

      do-while 循環結構

      C#支持do-while循環結構,其用法為“do{ 循環體 }while ( 邏輯表達式 ) ;”例如以下代碼演示了do-while循環結構。

      string[ ] names = new string[100];

      int index = 0;

      do

      {

      Console.WriteLine(names[index]);

      index ++ ;

      }

      while (index < names.Length - 1);

      這段代碼相當于執行以下代碼

          // 執行第一次循環

          Console.WriteLine(names[index]);

      index++;

          if (! (index < names.Length - 1))

          {

              goto EndDoWhile;

          }

          // 執行第二次循環

          if (index < names.Length - 1)

          {

              Console.WriteLine(names[index]);

              index++;

          }

          else

          {

              goto EndDoWhile;

          }

          // 執行第三次循環

          if (index < names.Length - 1)

          {

              Console.WriteLine(names[index]);

              index++;

          }

          else

          {

              goto EndDoWhile;

          }

      // 無窮盡的執行循環

      EndDoWhile:

      從這段代碼可以看出,do-while循環和forwhile循環有個不同就是它在執行第一次循環體的前不計算邏輯表達式,讓代碼無保障的運行在高風險區,這就成為一個程序錯誤的高發區。因此筆者很少使用do-while語句,只在某些特殊的情況下才使用。

      筆者建議,要寫出穩定健壯的程序,開發人員必須有著很強的風險意識,對意外不得有僥幸心理,認認真真的盡量處理所有可能出現的風險。一個程序應該編寫大量的代碼來維護一個安全的環境,讓功能性的代碼運行得到保障。[袁永福版權所有]

      posted on 2011-08-07 09:06  袁永福 電子病歷,醫療信息化  閱讀(1004)  評論(0)    收藏  舉報

      導航

      主站蜘蛛池模板: 又黄又无遮挡AAAAA毛片| yw尤物av无码国产在线观看| 好男人日本社区www| 国产成人永久免费av在线| 麻豆国产va免费精品高清在线| 库尔勒市| 午夜精品极品粉嫩国产尤物| 国产精品一码在线播放| 亚洲AV高清一区二区三区尤物| 最近免费中文字幕大全| 日韩乱码人妻无码中文字幕视频| 2019国产精品青青草原| 国产 精品 自在 线免费| 亚洲综合色网一区二区三区| 亚洲人妻精品中文字幕| 无码精品一区二区免费AV| 国产一区在线播放av| 91精品国产麻豆国产自产| 亚洲国产成人资源在线| 久久久久久久久18禁秘| 国内自拍偷拍一区二区三区| 亚洲超碰97无码中文字幕| 久久精品国产国产精品四凭| 欧美日韩在线亚洲二区综二| 亚洲欧美中文字幕5发布| 国产精品成人免费视频网站京东| 免费无码黄网站在线观看| 成年女人免费碰碰视频| 亚洲综合一区二区三区| 日韩区二区三区中文字幕| 窝窝午夜色视频国产精品破 | 精品少妇后入一区二区三区| 亚洲国产成人久久77| 国产熟女一区二区三区四区| 欧美丰满熟妇乱XXXXX网站| 亚洲人成电影在线天堂色| av中文字幕国产精品| 日韩美少妇大胆一区二区| 别揉我奶头~嗯~啊~的视频| 日韩精品 在线 国产 丝袜| 长腿校花无力呻吟娇喘|