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