C#

C#はマイクロソフトが開発したプログラミング言語です。後発の言語だけあって、開発効率が高くなっています。名前のとおりC言語系ですが、CよりDelphiに近い言語です。この記事では、C#の使い方をご紹介します。

コメント

コメントとは、ソースプログラムの注釈である。実行プログラムの動作に影響はない。

単一行コメント

//から行末まではコメントとして扱われる。

// コメント

複数行コメント

/*から*/まではコメントとして扱われる。コメントは複数の行に跨ってもよい。

/*
  コメント1
  コメント2
*/

ドキュメントコメント

ドキュメントコメントとは、インテリセンスに表示されるコメントである。

/// <summary>メソッドの説明</summary>

ドキュメントコメントには、次のタグを使うことができる。

ドキュメントコメントのタグ
タグ 説明
summary メソッドの説明
param メソッドの引数の説明
returns メソッドの戻り値の説明
example 例文
code コード
exception Throwできる例外
value プロパティの説明

配列

int[] array = new int[3];
string[] seasons = new string[4];

配列の初期化

int[] array = new int[] {1, 2, 3};
string[] seasons = new string[] {"spring", "summer", "autumn", "winter"};

List

List<list> list = new List<int>();
List<string> weekday = new List<string>();

リストに項目を追加する。

List<string> seasons = new List<string>();
seasons.Add("spring");
seasons.Add("summer");
seasons.Add("autumn");
seasons.Add("winter");

リストに複数の項目を追加する。

List<string> seasons = new List<string>();
seasons.AddRange(new List<string>() {"spring", "summer", "autumn", "winter"});

foreach

int[] numbers = new int[] {1, 2, 3};
foreach (int i in numbers) {
  Console.WriteLine(i);
}

enum

C#では列挙型(enum)で定数を定義することができる。

列挙型で定義した定数は、0から始まって1づつ増加する整数の値である。

enum Season {
  Spring, Summer, Autumn, Winter
}

switch

C#のswitch文はパターン一致によって処理を分岐させることができる。

int i = 1;
switch (i) {
  case 0;
    // do something
    break;
  case < 3:
    // do something
    break;
  case > 6:
    // do something
    break;
  default:
    // do something
    break;
  }
}
  

try catch

try catchとは、例外が発生したときに実行する処理を指定する構文である。

try {
  // 例外が発生する処理
} catch (ArgumentException e) {
  // 例外が発生したときの処理
}

Win32 APIやDLL関数を呼び出すには

Microsoft .NET Framework上で動作するプログラムから、従来形式のDLLがエクスポートしている関数を呼び出すには、DllImport属性(System.Runtime.InteropServices名前空間)を利用して、その関数が外部にあることをあらかじめ宣言しておきます。

DllImport属性を付けた関数の宣言では、public static extern修飾子を指定します。

Win32 APIやDLL関数を呼び出す際に、関数のパラメータとして定数を指定する場合があります。通常、これらの定数はヘッダファイル(windows.hなど)で定義されていますが、C#ではこれらのヘッダファイルを扱うことができません。したがって、必要な定数は自分で定義する必要があります。

using System.Runtime.InteropServices;

class Sample {
[DllImport("user32.DLL")]
public static extern int MessageBoxA(int hWnd,
    String lpText, String lpCaption, uint uType);

public const int MB_OK = 0x00000000;
}

#region

#region#endregion で囲んだ部分はコードのブロックとなり、Visual Studioコードエディタのアウトライン機能により展開や折りたたみができるようになる。