C#の流れ制御文は、ほぼC言語本来の制御文法に沿っています。基本的な制御文は4種類しかありません。(例外処理に係る 制御文は、Exception
 の項目を参照してください。)
  


  if 〜 else文
  for 〜   文
  while 〜 ,do 〜 while 〜文
  switch 〜 case 文
 

if 〜 else
  
基本的な条件制御文です。
    例示すると、

        int a=1;
        string s;
        if (a==1) s="aは1です";
         else    s="aは1ではありません";
  
    この例では、整数aに1を初期的に代入しているので、文字列sには、"aは1です"が代入されます。
    if の後の( )内は条件式となります。
    条件式の答えは、真偽(true 又は false) となりますので、aを論理型データとすれば、

     bool a=true;
        string s;
        if (a) s="aは真です";
         else    s="aは真ではありません";

   
 という書き方ができます。
     また、条件制御の結果、実行するプログラムブロックが複数ある場合は、{ } でくくります。

     bool a=true;
        int i;
    string s;

        if (a)
        {
          s="aは真です";
          i=1;
        }
         else
          {
             s="aは真ではありません";
             i=2;
          }

           条件式には、次のような比較演算子又は論理演算子を使うことができます。下段の3カラムは論理演算子に当たります。
       
演算子表現
使用例
判断内容
>
if (a>b)
※a,bのデータ型が数の場合のみ。文字型の場合には Stringクラスのメソッドを使って次のようにする
  if  (Compare(a,b)>0)
大きい
>=
if (a>=b)
※a,bのデータ型が数の場合のみ。文字型の場合には Stringクラスのメソッドを使って次のようにする
  if  (Compare(a,b)>=0)
等しいか大きい
<
if (a<b)
※a,bのデータ型が数の場合のみ。文字型の場合には Stringクラスのメソッドを使って次のようにする
  if  (Compare(a,b)<0)
小さい
<=
if (a<=b)
※a,bのデータ型が数の場合のみ。文字型の場合には Stringクラスのメソッドを使って次のようにする
  if  (Compare(a,b)<=0)
等しいか小さい
==
if (a==b)
※文字型の場合にはStringクラスのメソッドを使っ て次のように表現することもできる
  if  (Equals(a,b))
等しい
!=
if (a ! =b)
※文字型の場合にはStringクラスのメソッドを使っ て次のように表現することもできる
  if  (
!Equals(a,b))
等しくない
&&
if (a==b && c!=d)
かつ(AND)
||
if (a==b || c!=d)
又は(OR)
!
if (!a)
でない(NOT)

      条件式を構成する要素が複雑になると、記述方法に注意が必要です。
      &&と||では、&&が優先度が高いため、次の例では、
a==b && c==d の真偽がまず判断され、この判断結果とe==f の判断結果とのORが判断されて条件式の結果と
     なります。
 
       if ( a==b && c==d || e==f ) 

      逆に、|| を優先させたい場合には、次のように&&より優先度の高い ( ) を用います。

 
      if ( a==b && ( c==d || e==f ) )

            
else のかわりに else if を使うと、条件制御を効率よく行うことができます。

      bool a=true;b=false;
        int i;
    string s1,s2;

        if (a)
        {
          s1="aは真です";
          i=1;
        }
         else if (b)
          {
             s1="aは真ではありません";
             i=2;
          }
             else
             {
               s1="aは真ではありません";
               s2="bは真ではありません";
               i=2;
             }    

  
for  〜  文
    for は一定のプログラムブロックを繰り返す制御文です。
    for文の書式は次のとおりです。

      for (初期値 ; 終了条件 ; 増減分)

         具体例としては、

          int i , j = 0 ;
          for (i=1;i<11;i++) j+=i ;
         
     この例では、iの初期値は1で、i++により1つずつ増加しながら、j に足されて行くことになります。
    forで繰り返された結果、1〜10までの和がj に入ることになります。
         終了条件にiが合致しなくなった段階でforループから抜ける点に注意してください。
          複数のプログラムブロックを繰り返し実行させたい場合は、{ } で囲みます。
 
        int i , j = 0 , k = 0 ;
        for (i=1;i<11;i++)
        {
          j+=i ;
          k+=1;
        }
        
    増減分として、1つずつ減少させるには、i--のように表示し、増減を1以外で行うためには、 i = i + 10 というように表示します。    

          for文を多重化することもできます。

       int i , j = 0 , k = 0 ;
        for (i=1;i<11;i++)
        {
      
for ( j=0;j<10;j++)           
            {
               k=i; j+=i ;

          k+=1;
        }


           ※for内のプログラムブロックから、一定の条件でループから抜けるには、breakステートメントを入れます。

 
while 〜 ,do 〜 while 〜文
      forは、繰り返す回数が予め決められていますが、whileは条件式に合致するまで、繰り返すため回数に制限はありません。
      なお、whileには、プログラムブロック実施前に条件式を判定する方法と、実施後に判定する方法があります。
   まず、実施前に判定する方法の記述例です。

          int i=0 ;
          string s=NULL ;
            while (i<10)
             {
                s+="*";
           i+=1;   
             }

   上の例では、整数iがカウンタの役割を担い、iが0から9までインクリメントされることにより、sには*文字が10個並びます。 
       次に実施後に判定する方法に書き換えます。

          int i=0 ;
          string s=NULL ;
      do
            {
              s+="*";
           i+=1;   

            }
            while (i<10);

 
   この例では、do以下のプログラムブロックが先に実行されますから、sは*文字が9個並びます。

      ※while文には、回数制限がないため、無限ループにならないよう注意してください。次のような例は確実に
    無限ループになり、システムダウンにつながる危険がありま す。

          int i=0 ;
          string s=NULL ;
            while (i<10)
             {
                s+="*";
             }

          ※for内のプログラムブロックから、一定の条件でループから抜けるには、breakステートメントを入れます。

 
switch 〜 case 文
  if 文は1つの条件式での分岐ですが、switch文を使うと、複数の条件によって多重分岐することができます。

     int i=3;
      string s;

      switch (i)
      {
        case 1:
          s="大阪行きホームです";
          break;  
        case 2:
          s="東京行きホームです";
          break;    
        case 3:
          s="富山行きホームです";
          break;    
        case 4:
          s="福岡行きホームです";
          break;    
 
        default:
          s="札幌行きホームです";
         }

    switchの後の( )内が評価式となり、caseで評価式の値を指定することにより、多重分岐を行います。上記の 例
   では、整数 i に初期値3を代入しているので、case 3の後のプログラムブロックが実行されます。
         次のcaseに実行が流れ込まないよう、break を入れ忘れないようにしてください。 
    どのcase条件にも該当しない場合には、default後のプログラムブロックが実行されます。