C#本質論學習 ☞二

趙明威發表於2012-11-15

品味經典和自己的學習之路

一、C#基本運算子

1、C#中的運算子

與C++的類似,==、!=、<、>、<=、>=、binary +、binary -、^、&|、~、++、-- 和 sizeof(),通常在列舉時允許這些運算。此外,很多運算子可被使用者過載,由此在應用到使用者定義的型別時更改這些運算子的含義.

2、優先順序

與C++差異也不大,請關注網站http://msdn.microsoft.com/library/6a71f45d.aspx講的比較清楚。本處不再贅述。

二、說說C#的控制流語句

1、while和do/ while

while(條件)與do/while(條件)的區別僅僅是先判斷條件是否滿足還是先執行的問題,簡單的程式如下:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace WhileDo
{
   class Program
  {
    static void Main()
    {
        //計算1到100的和。
        int i=1,m = 0;

        while /*不會執行*/(i!=1)
        {
            m += i;
            i++;
        }
        Console.WriteLine("i={0}\t,m={1}",i,m);
        i=1;
        m = 0;

        do/*至少執行一次,這時i已經增加,再加入條件時要注意*/
        {
            m += i;
            i++;
        } while (i != 2);
        Console.WriteLine("i={0}\t,m={1}", i, m);
        //正常情況下執行程式
        //在i=100時也執行了程式i,的至最後為101
        while (i <= 100)
        {
            m += i;
            i++;
        }
        Console.WriteLine("i={0}\t,m={1}", i, m);
        i = 1;
        m = 0;

        do
        {
            m += i;
            i++;
        } while (i <= 100);
        Console.WriteLine("i={0}\t,m={1}", i, m);
        Console.ReadKey();
      }
   }
}  

輸出:enter image description here

2、for和foreach

for迴圈語句可以轉化為while語句,for迴圈的次數應該是已知的,有限的。但是while語句還可以適用於迴圈次數不定的迴圈。不再過多的舉例論證了,還拿1到100內的加法:

 for(i=1;i<=100;i++)  
{
   m=m+i;
}

foreach 用來遍歷陣列或者其他的資料項的所有元素,不能對元素進行賦值,而for語句可以。

3、switch ...case語句

下面用一段小程式說明foreach和switch....case和跳轉語句的簡單用法:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace ValidateAndMove
{
    class Program
    {
        static void Main( )
        {
            string win;
            int n=0;
            string[] player=new string[3]{"a","b","c"};

           Console.Write("請輸入一個字母(a,b,c中的一個):");
            win=Console.ReadLine();

            switch (win)
            {
                case "a": Console.Write("你輸入的是{0}\n", win); n = 1; break;
                //如果符合條件就跳出switch語句。不再執行其中其他的語句
                case "b": Console.Write("你輸入的是{0}\n", win); n = 1; break;
                case "c": Console.Write("你輸入的是{0}\n", win); n = 1; goto default;
               /*goto語句可以將語句轉接到想要它執行的地方,也是switch語句中最後case貫穿default  
                  的唯一可用的東西。*/ 
                 default :  
                   Console.Write("暫時沒人勝利!\n");
                   Console.Write("請輸入一個字母(a,b,c中的一個):");
                   win=Console.ReadLine();  
              //foreach遍歷player中的所有元素
                   foreach (string letter in player)
                   {
                       if (win == letter)
                       {
                        n = 1;
                        Console.Write("勝利的是{0}\n", win);
                       }
                   }
                   break;
           }
           if (n!=0)
              Console.Write("幸運的告訴你{0}勝利",win);
          else
              Console.Write("平局!!");
          Console.ReadKey();
        }

     }
}

輸出:enter image description here

相關文章