C#言語の文法
をテンプレートにして作成
[
トップ
] [
新規
|
一覧
|
検索
|
最終更新
|
ヘルプ
|
ログイン
] [
Twitter
]
開始行:
このページは新人研修用のレジュメです
#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...
new int[,] { {11,22}, {99,88}...
};
*演算子 [#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} ...
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が必要
終了行:
このページは新人研修用のレジュメです
#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...
new int[,] { {11,22}, {99,88}...
};
*演算子 [#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} ...
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が必要
ページ名: