型の別名を定義する (using利用) - C#

別名で型を定義したいことがあります。
C#ではusingを使うと型の別名を定義できます。クラスの内側ではなく外側で定義する必要があります。

書式

using (定義したい型名) = (型名)
補足
(型名)の部分はクラス型、構造体またはネームスペースである必要があります。

記述例

using MyFlag = Int32;
using STATUS_CODE = String;
補足
次のコードはコンパイルエラーになります。 Int32 と記述した場合は、System.Int32構造体のエイリアスとなります。 また、Stringと記述した場合はSystem.Stringクラスのエイリアスとなり、コンパイルできます。
一方、int string と記述した場合は型名となるため、CS1001:識別子がありません エラーが発生しコンパイルできません。
using MyFlag = int;
using MyFlag = string;

コード例

C# 4.0以降ではnamespaceの外側に記述する必要があります。
using HANDLE = System.IntPtr;

namespace GetSetSystemTimeDemo
{
  
  public partial class Form1 : Form
  {
    ...
 }
}

プログラム例

UI

下図のUIを作成します。フォームにボタンを1つ配置します。

コード

下記のコードを記述します。
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;

namespace UsingTypeDefinition
{
  using HANDLE = System.IntPtr;

  public partial class FormMain : Form
  {
    public FormMain()
    {
      InitializeComponent();
    }

    private void button1_Click(object sender, EventArgs e)
    {
      HANDLE myhandle = this.Handle;
      MessageBox.Show(myhandle.ToString());
    }
  }
}

解説

System.IntPtr型の別名をHANDLEという名称で定義します。
  using HANDLE = System.IntPtr;

HANDLE型の変数 myhandle に Form.Handleプロパティの値を代入します。 Handle プロパティの値はSystem.IntPtr のため、System.IntPtr の別名である HANDLE型にもキャストや変換処理をせず代入できます。
  HANDLE myhandle = this.Handle;
  MessageBox.Show(myhandle.ToString());

実行結果

上記のプロジェクトを実行します。下図のウィンドウが表示されます。


[button1]をクリックします。下図のダイアログが表示され、FormMainのHandleの値が表示されます。


著者
iPentecのメインプログラマー
C#, ASP.NET の開発がメイン、少し前まではDelphiを愛用
掲載日: 2011-01-06
iPentec all rights reserverd.