2

C#で新しいクラスファイルを作成する場合、通常の構造は次のとおりです。

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

namespace UnitTest
{
    class Class1
    {
    }
}

StyleCopは、名前空間の外部でディレクティブを使用することを好まないため、理想的には、コードを次のようにリファクタリングします。

namespace UnitTest
{
    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;

    class Class1
    {
    }
}

Javaプログラマーとしての日々から、次のようにパッケージ全体ではなく、必要な参照のみをインポートする方がよいと教えられました。

import foo.bar.MyObject;

それ以外の

import foo.bar.*;

これはC#でも実行でき、型のエイリアスを使用できる機能が追加されていることを知っています(ネイティブコードで作業する場合に便利な場合があります)。

using StringBuilder = System.Text.StringBuilder;

またはエイリアスを使用する場合:

using HANDLE = System.IntPtr;
using HDC = System.IntPtr;

ディレクティブを使用する際のベストプラクティスと効率に関する私の質問は次のとおりです。

  1. 名前空間内でステートメントを使い続ける方が効率的ですか、それとも純粋に文体的な好みですか?
  2. 名前空間全体ではなく、必要なアイテムのみを含める方が効率的ですか?
4

2 に答える 2

5
  1. それが違いを生む少数のケースがありますが、ほとんどの場合、それは単にスタイル上の好みです.
  2. using ステートメントは、型を見つけることができる場所をコンパイラに伝えるだけです。実行時間には影響しません。
于 2013-03-07T09:58:28.430 に答える
3
  1. いいえ; 意味的な変化をもたらさない限り、文体の好み。意味が変わるケースは非常にまれです (ただし、LINQ-to-SQL コード ジェネレーターに、配置場所を気にするバグがありましたが、現在は修正されています)。
  2. いいえ; 未使用のディレクティブは使用されず、コンパイラに大きな影響を与えません

ディレクティブが多すぎると、あいまいさが生じる可能性があることに注意してください。たとえば、 と呼ばれる無数のクラスがありますTimer。そのため、物事を整理整頓しておく価値があります。

于 2013-03-07T09:59:27.453 に答える