このC#「使用」ディレクティブとは何ですか?
-
07-07-2019 - |
質問
コード例でこのC#usingステートメントを見ました:
using StringFormat=System.Drawing.StringFormat;
それは何ですか?
解決
これは、タイプ名をより短い名前にエイリアス化しています。名前空間のエイリアスにも同じ構文を使用できます。 usingディレクティブを参照してください。
(リチャードへの応答で更新)
他のヒント
これはエイリアスです。今後は、 StringFormat を使用して System.Drawing.StringFormat を参照できます。名前空間全体を使用したくない場合に便利です(たとえば、名前の衝突の問題の場合)。
source: MSDNのディレクティブ記事を使用
おそらく、別の無関係なStringFormatがAcme.Stuffのような別のネームスペースで宣言されています。その場合、これは混乱の原因となります。
using System.Drawing; // Contains StringFormat type.
using Acme.Stuff; // Contains another StringFormat type.
private void Foo()
{
StringFormat myFormat = new StringFormat(); // which one to use?
}
エイリアシングは、 StringFormat = System.Drawingで使用によるものです。 .StringFormatは混乱の一部を解消します。
これにより、System.Drawing.StringFormatのエイリアスが定義されます。
これは次の例と同じです:
using SQL = System.Data.SqlServer;
SQL.SqlConnection sql = new SQL.SqlConnection();
これは、System.Drawing.StringFormatのエイリアスとしてStringFormatを使用していることを意味します。
名前空間のエイリアスです
usingキーワードは、名前空間のインポートやクラスのエイリアス、または使い捨てオブジェクトのスコープの管理に使用されます。ここでは、名前空間の使用について説明しています。
using StringFormat=System.Drawing.StringFormat;
ここでのusingの使用方法は、C#では少し珍しいですが、Javaのimportステートメントではより一般的です。 System.Drawing名前空間全体をインポートせずにStringFormatエイリアスを提供します。 Javaのバックグラウンドを持つ一部の人々は、全体のanmespaces(別名Javaパッケージ)ではなく、使用されているクラスのみを積極的にインポートすることを好みます。特定のクラス名のみをインポートする場合は、おそらく名前の競合の可能性を事前に回避しますが、C#ではあまり一般的ではなく、Visual StudioはJavaのNetbeansなどの方法を推奨しません。
エイリアスのより一般的な使用法は、名前の競合がある場合にクラス名を短縮エイリアスに解決することです。
using System.Drawing;
using AwesomeCompany.ReallyAwesomeStuff.AwesomeLibrary.Drawing;
/* AwesomeCompany.ReallyAwesomeStuff.AwesomeLibrary.Drawing has a StringFormat class */
using AwesomeStringFormat = AwesomeCompany.ReallyAwesomeStuff.AwesomeLibrary.Drawing.Stringformat;
using StringFormat = System.Drawing.StringFormat;
public class AwesomeForm() : Form
{
private AwesomeForm()
{
AwesomeStringFormat stringFormat = new AwesomeStringFormat();
stringFormat.Color = Color.Red;
/* etc */
}
}