Точно. Вы можете получить ошибку компилятора «Неоднозначная ссылка», когда два объекта невозможно различить. Как правило, вы можете указать полный путь в коде, и это не вызовет проблемы, но если dll были полностью идентичны, то вы не сможете различить два объекта в любом случае. Ся у нас есть две dll:
System.IO, который содержит класс File
а также
MyProject.IO, который содержит класс File
Если бы у вас было что-то подобное ...
using System.IO;
using MyProject.IO;
...
private void foo()
{
File f = new File();
}
... у вас была бы неоднозначная ссылка, так как невозможно определить, о каком файле вы говорите. Это исправит это:
using System.IO;
using MyProject.IO;
...
private void foo()
{
MyProject.IO.File f = new MyProject.IO.File();
}
Единственный способ, который было бы трудно исправить, состоял бы в том, что бы путь «File» был идентичен в обеих сборках, но это потребовало бы маловероятной ситуации, когда два dll имели одинаковую структуру пространства имен. Например, моя описанная выше ситуация никогда бы не произошла, поскольку никто не будет называть там проект «Система» (за исключением реальных разработчиков .Net Framework).