このページは新人研修用のレジュメです

#contents

*変数 [#t103c276]
**値型と参照型 [#e5a48fe2]
-ValueType,ReferenceType
-Boxing/Unboxing
**型の種類 [#m55405de]
-ブール型
-整数型
-文字型
-10進数型
-浮動小数点型
-ポインタ型
**スコープ [#d5606ca6]
-名前空間
--usingディレクティブ
-スタックとヒープ
**クラス [#w0d0ec89]
-クラスとインスタンス
-パラメータ付きコンストラクタを持つクラスの継承
  class A
  {
     public A(int x, int y) {}
  }
  class B: A
  {
     public B(int x, int y): base(x + y, x - y) {}
  }

**配列 [#v3ae08ea]
-配列の使い方
-配列の初期化のしかた
 myJaggedArray[0] = new int[] {1,3,5,7,9};
 myJaggedArray[1] = new int[] {0,2,4,6};
 myJaggedArray[2] = new int[] {11,22};
 
 int[][] myJaggedArray = new int [][] 
                         {
                            new int[] {1,3,5,7,9},
                            new int[] {0,2,4,6},
                            new int[] {11,22}
                         };
 
 int[][] myJaggedArray = {
                            new int[] {1,3,5,7,9},
                            new int[] {0,2,4,6},
                            new int[] {11,22}
                         };
 int[][,] myJaggedArray = new int [3][,] 
                         {
                            new int[,] { {1,3}, {5,7} },
                            new int[,] { {0,2}, {4,6}, {8,10} },
                            new int[,] { {11,22}, {99,88}, {0,9} } 
                         };


*演算子 [#m56aca74]
-算術演算子
-文字列連結+
-インクリメント、デクリメント
-複合代入演算子
-論理演算子
--ショートサーキット…演算子の左辺でfalseになったら右辺は評価しない
-関係演算子
-ビット演算子
--シフト演算子
-キャスト演算子
--as演算子…キャスト演算子に似てるがキャストできないとnullになる点が違う
--is演算子…クラスのis a関係の判定に使うと思われ
-条件演算子
-new演算子
-型情報演算子

*制御構造 [#ua4b1481]
-if-else
-switch-case
-while{}
-do{}while
-for(),foreach()
-goto

**foreachの例 [#nb5a8665]
 using System;
 class MainClass 
 {
    public static void Main() 
    {
       int odd = 0, even = 0;
       int[] arr = new int [] {0,1,2,5,7,8,11};
 
       foreach (int i in arr) 
       {
          if (i%2 == 0)  
             even++;      
          else 
             odd++;         
       }
 
       Console.WriteLine("Found {0} Odd Numbers, and {1} Even Numbers.",
                         odd, even) ;
    }
 }
 出力
 Found 4 Odd Numbers, and 3 Even Numbers.
-enumのforeach
 enum HogeType
 {
   ALPHA,
   BETA,
   GAMMA
 };
 
 foreach(HogeType type in Enum.GetValues(typeof(HogeType)))
 {
   switch(type)
   {
     case HogeType.ALPHA:
         ....
 };

*メソッド定義 [#lf516ff1]
-アクセス制御
-staticなメソッドとそうでないメソッドの違い

*その他のフィーチャー [#q9f7931b]
**例外処理 [#ncd82373]
-try{}
-catch(){}
-finally{}
-throw
**プロパティ [#ec64c8a7]
 private int a;
 int A {
   get { return a; }
   set { a = value; }
 }
**インデクサ [#r146ec74]
 using System;
 
 class A 
 {
 	int val;
 	public int Val 
 	{
 		set { val = value;}
 		get { return val;}
 	}
 }
 
 class As 
 {
 	A[] a_array = new A[3];
 
 	public As() 
 	{
 		for( int i = 0; i < 3; i++ ) 
 		{
 			a_array[i] = new A();
 			a_array[i].Val = i+1;
 		}
 	}
 
 	public A this[int i] 
 	{
 		get { return a_array[i];}
 	}
 }
 
 
 /// <summary>
 /// Class1 の概要の説明です。
 /// </summary>
 class Class1
 {
 	/// <summary>
 	/// アプリケーションのメイン エントリ ポイントです。
 	/// </summary>
 	[STAThread]
 	static void Main(string[] args)
 	{
 		As aaa = new As();
 		for( int i = 0; i < 3; i++ )
 			Console.WriteLine(aaa[i].Val);
 
 		Console.ReadLine();
 	}
 }
**イベントとデリゲート [#d21cfaa3]
***デリゲート [#a0846c72]
 using System;
 using c = System.Console; // alias
 namespace DeleTest 
 {
 	public class cTest 
 	{
 		//delegate されるメソッドの実体
 		public int DelFncImpl( int i ) 
 		{
 			c.WriteLine("i=" + i.ToString() );
 			c.WriteLine("DelFncImpl()呼ばれました");
 			return i;
 		}
 
 		public int DelFncImpl2( int i ) 
 		{
 			c.WriteLine("i=" + i.ToString() );
 			c.WriteLine("DelFncImpl2()呼ばれました");
 			return i;
 		}
 	}
 
 	public class cStart 
 	{
 		public delegate int DelFnc(int i );
 
 		public static int Main() 
 		{
 			cTest ct = new cTest();
 			DelFnc[] df = new DelFnc[2];
 			df[0] = new DelFnc(ct.DelFncImpl);
 			df[1] = new DelFnc(ct.DelFncImpl2);
 			
 			for ( int i = 0; i < 2 ; i++ ) 
 			{
 				df[i](i);
 			}
 			
 			return 0;
 		}
 	}
 }
***イベント [#k53efe61]
 using System;
 using c = System.Console; // alias
 namespace EvntTest 
 {
 	public class Start
 	{
 		delegate void DeleFnc();
 		static void Handler() 
 		{
 			c.WriteLine("hander 呼ばれた");
 		}
 		static void Handler2() 
 		{
 			c.WriteLine("hander2 呼ばれた");
 		}
 		static void Handler3() 
 		{
 			c.WriteLine("hander3 呼ばれた");
 		}
 		static event DeleFnc TestEvnt;
 
 		public static void Main() 
 		{
 			TestEvnt += new DeleFnc(Handler);
 			TestEvnt += new DeleFnc(Handler2);
 			TestEvnt += new DeleFnc(Handler3);
 			TestEvnt();
 		}
 	}
 }
**属性 [#p870a299]
C#の属性を参照


*クラスの派生・継承 [#adb8d963]
-abstractなプロパティの書き方
--以下のようにする
 abstract public String Name{get;}
 abstract public String Name2{get;set;}
--クラスの宣言でもabstractが必要

トップ   編集 差分 履歴 添付 複製 名前変更 リロード   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS