C#インターフェースでのキーワード「使用」の使用


16

C#を使用してコードを記述し、Visual Studio 2010を使用してインターフェイスを定義すると、常に(使用例に示すように)多数の "using"ステートメントが含まれます。

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace TestEngine.TestNameSpace
{
    interface ITest1
    {
        bool testMethod(int xyz);
    }
} 

これらが何のためにあり、本当に必要なのだろうか。これらは省略できますか?インターフェイスの説明でこれらの部分を使用している場合にのみ必要ですか?


編集用のthnx。私は自分でそれを理解しました。どういうわけか、コードブロックでステートメントを選択したにもかかわらず、usingステートメントが省略されていました:)
オンノ

2
また、stackoverflow.com / a / 151560/240613を読んでください。コードでは、使用は間違った場所にあります。
アルセニムルゼンコ

1
リンクのThnx、それは素晴らしい追加です。@Akshat Jiwan Sharmaによる回答の後、これは実際に事実であることが明らかになりましたが、同時に質問はVS2010のインストール時にMSによって提供されるデフォルトのテンプレート/設定に関するものです。
オンノ

1
@MainMa-これは、Visual Studioがusingsデフォルトのテンプレートに入れる場所です。Microsoftがすぐに更新しない限り、この質問は有効です。
ChrisF

1
@Midhat:確かに、質問自体を読んだときに何が質問されているかは明らかだと思います。より良いタイトルが考えられる場合は、タイトルを自由に編集してください。
オンノ

回答:


49

Visual Studioは、どのコードを記述するつもりなのかを知らないため、デフォルトで「新しいクラス」テンプレートに最も一般的な名前空間を含めます。これは、作成する新しいコードのすべての単一行のすべての参照を解決する必要がないように行われます。

右クリックして[使用方法の整理]> [削除と並べ替え ]を選択すると、基本コードを記述した後、未使用のコードが削除されます。


2
>解決- - >使用して...あなたは「使用」誤って行を削除行う場合も、あなたはその今見つけることができないし、右クリックし、クラス名に行くことによってで戻すことができます
ミスターリスター

10
@MrLister:まだこれを知らなかった場合:「ctrl +」を押します。(制御期間)カーソルが未解決のタイプまたはクラスにあり、マウスに触れずに同じ効果が得られる場合。
スティーブンエバーズ

3
また、答えへの追加として、使用されていない「使用」のみがロードされるため、未使用の「使用」はコードのランタイムに影響しません。ただし、IDEおよびコンパイル速度に影響を与える可能性があります:stackoverflow.com/questions/136278/…–
Holger

これが受け入れ答えですので、私はStyleCopが間違った場所にいるの言及について文句を言うだろうし、また1等、新しいクラスと新しいインターフェースのためのテンプレートを編集することができますことを言及したかった
仕事

5

はい、使用されていないusingディレクティブを削除できます。これらのディレクティブは最も一般的に使用されるものであるため、Visual Studioによって自動的に追加されます。たとえば、インターフェイスでlinqを使用しない場合は、ディレクティブを削除できます

 System.Linq;

同じことは、他のディレクティブにも当てはまります。また、名前空間内でusingディレクティブを移動することは、私の意見では良い習慣です。


あなたが尋ねた質問を喜んで助けてくれて、私も長い間困惑しました。:)
Akshat Jiwan Sharma

テンプレートファイルを編集し、使用するステートメントを含める場所と場所を調整できます。デフォルトではネームスペース内に配置する必要があります。そうしないと、StyleCopが文句を言います。
ジョブ

3

これらのデフォルトusingステートメントは、インターフェースを作成するときのデフォルトテンプレートの一部です。テンプレートはいつでも編集して削除できます。詳細については、この質問を参照してください。


しかし、本当に必要なのでしょうか?それらがテンプレートに含まれる正当な理由はありますか?
オンノ

必要ない場合は、単に削除してください。これらはデフォルトにすぎません。
バーナード

これらは、インターフェイスメソッドの1つがそれらの1つにある戻り値型である場合にのみ必要です。少なくともSystemが必要であり、その他は返すタイプに必要な場合にのみ必要です。
グラハム

実際、多くのクラスはシステムを必要としません。しかし、全般的に、ほとんどの開発者、特に.NETに恐ろしく慣れておらず、メインシステムクラスを取得する場所がわからない開発者にとっては、作業が楽になります。
ワイアットバーネット

0

要するに、それらは名前空間と呼ばれます。名前空間は、コード内のいくつかのライブラリクラスを参照するためにも使用されます。.NETで名前空間を使用する方法に関する推奨ガイドラインもあります。

ほとんどの場合、使用しない場合は簡単に削除できます。次の2つの名前空間は、削除される可能性のある候補です。

using System.Collections.Generic;
using System.Linq;

一部のフレームワーク/ライブラリクラスが名前空間を宣言せずに使用されると、Visual Studioはコードをコンパイルせずに文句を言います。したがって、名前空間はコードを構造化し、プロジェクトクラス、インターフェイス、構造などの間の参照を容易にする役割を果たします。


-1

さまざまな方法で使用されるC#での使用..使用する単語キーワードとして使用する..システムを使用して使用したときの開始 つまり、すべての主要な機能が格納されているSystemという名前のDLLがあり、それを使用してコードを短縮しています...

system.WriteLine("Andy");

しかし、上記のシステムを使用する場合、次のように記述できます。

WriteLine("Andy");

接続を使用してSQLserverを使用すると、コマンド接続を使用してデータベースのデータを使用した後、それ自体が閉じます。時間を節約したいコーダーにとって非常に便利です


1
不要な(およびスパムの可能性がある)リンクを回答に追加しないでください。
ChrisF
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.