「C#とは」の編集履歴(バックアップ)一覧に戻る

C#とは - (2009/12/10 (木) 19:18:24) のソース

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