VS-Intellisenseは時々using
をページの先頭に書きますが、C#でnew namespace.class
のようにインラインで追加するのはなぜですか?なぜVS-Intellisenseは名前空間を「使用」してCの型に追加するのですか
例えば
using Namespace;
Obj obj = new Obj();
と
obj = new Namespace.Obj();
VS-Intellisenseは時々using
をページの先頭に書きますが、C#でnew namespace.class
のようにインラインで追加するのはなぜですか?なぜVS-Intellisenseは名前空間を「使用」してCの型に追加するのですか
例えば
using Namespace;
Obj obj = new Obj();
と
obj = new Namespace.Obj();
時々、2つの名前空間は、同じクラスを持っています。あいまいさを避けるために、名前空間がクラスに追加されます。
例: あなたがNamespace1とNamespace2を持っており、それらの両方がように、2つのソリューションが
1はexplecitly名前空間を持つことである。この場合、クラスEmployee
using Namespace1;
using Namespace2;
namespace MyNamespace
{
public class MyClass
{
private Employee emp1; // does it come from Namespace1 or Namespace2 ?
}
}
を行うことができたことを想像してみて定義済み
using Namespace1;
using Namespace2;
namespace MyNamespace
{
public class MyClass
{
private Namespace1.Employee emp1;
}
}
もう1つは、最初から従業員fr特定の名前空間を次のように指定します。
using Namespace1;
using Namespace2;
using Employee = Namespace1.Employee;
namespace MyNamespace
{
public class MyClass
{
private Employee emp1; //Notice the definition above
}
}
Visual Studio 2015にはこれが行われるバグがあります。
using
ステートメントをコードファイルの先頭に含めるかどうかに関わらず、バグにより定義の前に名前空間が追加されます。
I asked a similar question数週間前に、別のユーザーのお勧めで、関連するgithubプロジェクトの問題を提出しました。
私の問題は、基本的には「Visual Studio 2017へのアップデートはそのバージョンで修正されたため」と言われていました。
私はOrtundがより正確であると思うので、私は2つのプロジェクト(1番目のケース)と2番目のケース(2番目のケース)が書かれているので、うまくいきます。 – raf