Visual Studio 2010(おそらく2008年も)では、Intellisenseが列挙型の完全修飾名前空間を提案する動作に気づいています。
たとえば、次のようなコードを書くことができます。
element.HorizontalAlignment = HorizontalAlignment.Right;
element.VerticalAlignment = VerticalAlignment.Bottom;
しかし、私がそれを書き込もうとすると、それは私がそれを次のように書くことを示唆しています:
element.HorizontalAlignment = System.Windows.HorizontalAlignment.Right;
element.VerticalAlignment = System.Windows.VerticalAlignment.Bottom;
この不要な余分なコードは実際に追加されて読みにくくなる可能性があり、基本的にはIntellisenseと戦って回避する必要があります。
これには理由がありますか?オフにすることはできますか?その理由は、列挙型の名前がプロパティの名前と同じであるためだと思います。しかし、それは本当に良い理由ではありません。
編集:
これは、完全修飾の命名が必要ない理由を示す別の例です。
using SomeOtherNamespace;
namespace SomeNamespace
{
public class Class1
{
public Class2 Class2 { get; set; }
public Class1()
{
// These all compile fine and none require fully qualified naming. The usage is context specific.
// Intellisense lists static and instance members and you choose what you wanted from the list.
Class2 = Class2.Default;
Class2.Name = "Name";
Class2.Name = Class2.Default.Name;
Class2 = Class2;
}
}
}
namespace SomeOtherNamespace
{
public class Class2
{
public static Class2 Default { get; set; }
// public static Class2 Class2; (This throws an error as it would create ambiguity and require fully qualified names.)
// public static string Name { get; set; } (This also throws an error because it would create ambiguity and require fully qualified names.
public string Name { get; set; }
}
}