C#(シーシャープ)は、Microsoftが開発した、.NET構想の中核となるオブジェクト指向プログラミング言語です。
目次
公開時期
2000年
概要
- Microsoftが開発した、.NET構想の中核となるオブジェクト指向プログラミング言語
- Delphiの開発者アンダース ヘルスバーグがチーフ・アーキテクトとして参加
- 国際標準化機関のEcma International、ISOや、日本工業規格JISにおいて標準規格化
- C#のコードはコンパイラにより中間言語MSIL(MicroSoft Intermediate Language)に変換される
実行時にはMSILが仮想マシンCLR(Common Language Runtime)上にて実行される
- C#はC++をさらに進めたC++++から来ている
開発中はCOOL(C like Object Oriented Language:Cライクなオブジェクト指向言語)と呼ばれていた
言語仕様
クラスの宣言
クラスの継承
class SuperClass
{
}
class MyClass : SuperClass
{
}
抽象クラス
abstract class AbstractClass
{
}
class MyClass : AbstractClass
{
}
class MainClass
{
static void Main(string[] args)
{
MyClass myclass1 = new MyClass();
// 次の行はコンパイルエラーとなる。
// AbstractClass abstractClass1 = new AbstractClass();
}
}
継承不可のクラス
sealed class SealedClass
{
}
// 以下はコンパイルエラーとなる。
// class MyClass : SealedClass
// {
// }
基本クラスの参照
class SuperClass
{
public void Method()
{
}
}
class MyClass : SuperClass
{
private void MyMethod()
{
base.Method();
}
}
クラス自身の参照
class MyClass
{
private void MyMethod1()
{
this.MyMethod2();
}
private void MyMethod2()
{
}
}
オブジェクトの生成
class MyClass
{
}
class MainClass
{
static void Main(string[] args)
{
MyClass myClass1 = new MyClass();
}
}
オブジェクトの初期化(コンストラクタ)
class MyClass
{
public MyClass()
{
}
}
インターフェイスの宣言
実装するインターフェイスの指定
class MyClass : IInterface
{
}
列挙型の宣言
enum Days
{
Mon,
Tue,
Wed,
Thu,
Fri,
Sat,
Sun
}
フィールドの宣言
class MyClass
{
//変数の宣言
int a;
//定数の宣言
const int b = 1;
//readonlyの宣言
readonly int c = 2;
}
1次元配列の宣言
class MyClass
{
//初期化なし
int[] a = new int[2];
//初期化あり
int[] b = new int[] { 1, 2 };
}
2次元配列の宣言
class MyClass
{
//初期化なし
int[,] a = new int[2, 2];
//初期化あり
int[,] b = new int[,] { { 1, 2 }, { 3, 4 } };
}
プロパティの宣言
class MyClass
{
private int myVar;
public int MyProperty
{
get
{
return myVar;
}
set
{
myVar = value;
}
}
}
メソッドの宣言
class MyClass
{
public void MyMethod()
{
}
}
メソッドのオーバーライド
class SuperClass
{
public virtual void Method()
{
}
}
class MyClass : SuperClass
{
public override void Method()
{
}
}
メソッドのオーバーロード
class MyClass
{
public void MyMethod(int x)
{
}
public void MyMethod(int x, int y)
{
}
}
例外処理
static void Main()
{
try
{
//例外の発生する可能性のある処理
}
catch
{
//例外時の処理
}
finally
{
//例外の有無に関わらず実行させる処理
}
}
デリゲート
delegate void MyDelegate();
public class MyClass
{
static void Main()
{
MyDelegate myDelegate;
//デリゲートにメソッドMethod1の参照を代入
myDelegate = new MyDelegate(Method1);
//省略して記述も可能
//myDelegate = Method1;
//デリゲートにメソッドMethod2の参照を追加
myDelegate += new MyDelegate(Method2);
//省略して記述も可能
//myDelegate += Method2;
myDelegate();
}
static void Method1()
{
}
static void Method2()
{
}
}
名前空間
// N1
namespace N1
{
// N1.C1
class C1
{
}
//N1.N2
namespace N2
{
//N1.N2.C2
class C2
{
}
}
}
最終更新:2009年12月10日 19:18