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

変数

値型と参照型

  • ValueType,ReferenceType
  • Boxing/Unboxing

型の種類

  • ブール型
  • 整数型
  • 文字型
  • 10進数型
  • 浮動小数点
  • ポインタ型

スコープ

  • 名前空間
    • usingディレクティブ
  • スタックとヒープ

クラス

  • クラスとインスタンス
  • パラメータ付きコンストラクタを持つクラスの継承
     class A
     {
        public A(int x, int y) {}
     }
     class B: A
     {
        public B(int x, int y): base(x + y, x - y) {}
     }

配列

  • 配列の使い方
  • 配列の初期化のしかた
    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} } 
                            };

演算子

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

制御構造

  • if-else
  • switch-case
  • while{}
  • do{}while
  • for(),foreach()
  • goto

foreachの例

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:
            ....
    };

メソッド定義

  • アクセス制御
  • staticなメソッドとそうでないメソッドの違い

その他のフィーチャー

例外処理

  • try{}
  • catch(){}
  • finally{}
  • throw

プロパティ

private int a;
int A {
  get { return a; }
  set { a = value; }
}

インデクサ

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();
	}
}

イベントとデリゲート

デリゲート

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;
		}
	}
}

イベント

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();
		}
	}
}

属性

C#の属性を参照

クラスの派生・継承

  • abstractなプロパティの書き方
    • 以下のようにする
      abstract public String Name{get;}
      abstract public String Name2{get;set;}
    • クラスの宣言でもabstractが必要

トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2009-04-12 (日) 07:33:25 (4419d)