Ни один из них не является более эффективным, один из них - это просто определение пространства имен, другое - неявно.
В верхней части файла .cs, то с помощью директивы импорта пространств имен, а это означает, что типы в этих пространствах имен не требуется полный путь, чтобы быть признанным в коде
например
List<T>
появляется в System.Collections.Generic
... без помощи директивы для этого пространства имен вы должны использовать полное имя:
System.Collections.Generic.List<int> someList;
В то время как с ней, вы не
using System.Collections.Generic;
List<int> someList;
Иногда могут представлять собой конфликты пространства имен - представьте себе следующий сценарий:
Some.Namespace.Task
Some.Othernamespace.Task
Если импортировать оба пространства имен:
using Some.Namespace;
using Some.Othernamespace;
Task someTask; // <--- this line will cause a compile time error
компилятор не знает, какой Task
вы хотите, один из Some.Namespace или один из Some.Othernamespace - в этом случае вы должны быть конкретными и поставок полное пространство имен (или использовать псевдоним)
Надеется, что это помогает
Читать все о пространствах имен здесь:
http://msdn.microsoft.com/en-gb/library/z2kcy19k(v=vs.80).aspx
Оба должны быть такими же, если у вас есть использования заявленных для System.Net пространства имен. Единственное отличие заключается в явной и читабельности. Лично я предпочитаю без добавления пространства имен перед типом. Более читабельна для меня, но нет разницы в производительности. –