Na pewno. Błąd kompilatora „Niejednoznaczne odniesienie” można uzyskać, gdy nie można rozróżnić dwóch obiektów. Zazwyczaj można podać pełną ścieżkę w kodzie i nie spowoduje to problemu, ale jeśli biblioteki dll byłyby w pełni identyczne, nie można w żaden sposób rozróżnić dwóch obiektów. Sya, mamy dwie biblioteki dll:
System.IO, który zawiera klasę File
i
MyProject.IO, który zawiera klasę pliku
Gdybyś miał mieć coś takiego ...
using System.IO;
using MyProject.IO;
...
private void foo()
{
File f = new File();
}
... miałbyś dwuznaczne odniesienie, ponieważ nie ma sposobu, aby powiedzieć, o którym pliku mówisz. Naprawiłoby to:
using System.IO;
using MyProject.IO;
...
private void foo()
{
MyProject.IO.File f = new MyProject.IO.File();
}
Jedyny sposób, w jaki trudno byłoby to naprawić, byłby gdyby ścieżka pliku była identyczna w obu zestawach, ale wymagałoby to nieprawdopodobnej sytuacji, w której dwie biblioteki dll miały identyczną strukturę przestrzeni nazw. Na przykład moja powyższa sytuacja nigdy by się nie wydarzyła, ponieważ nikt nie nazwie tam projektu „System” (z wyjątkiem faktycznych programistów frameworku .Net).