名前空間の異なる2つのプロジェクトがあるとします。C#があいまいな名前空間でエラーを投げないのはなぜですか?
using Models = SharedClasses;
namespace MainAspNetMvcApplication{
private void Method1(){
var c = new Models.Cat();
//Error CS0234 The type or namespace name 'Cat' does not exist in the namespace 'MainAspNetMvcApplication.Models' (are you missing an assembly reference?)
}
}
namespace MainAspNetMvcApplication.Models{
//There is no class `Cat` in this namespace
public class Dog {
...
}
...
}
次のコードを含むSharedClasses
への参照が追加されました。
namespace SharedClasses{
public class Cat{
//The code for shared classe (Cat)
}
}
これはあいまいなModels
エラーによく似ています。ただし、C#は現在のプロジェクトModels
名前空間を想定し、CS0234
エラーをスローします。
SharedClasses
にModels
を使用すると言われていますが、デフォルトでは現在のプロジェクトは、現在のプロジェクトModels
と仮定していますか?私にとって
、最高の優先度は、少なくともC#私は私は2つの曖昧なModels
代わりのいずれかを選択を持って知っているべきではありませんusing Models = SharedClasses;
のために考慮すべき?
C#がこのように設計された理由を知りたいだけです。私は他の関連する答えに答えるために言語デザイナーを探していますが、歓迎します。
あなたの名前空間が含まれましたかアセンブリ参照をどこかに置く? <私には分かりません> – devRicher
@devRicherリファレンスを追加しました。また、 'Using Models = SharedClasses; 'に含まれています –
Models = SharedClassesを使用しないとどうなりますか? – mayu