在以下示例中,哪一个是最佳用途。如您所见,我只使用列表集合而没有命名空间中的任何其他内容。是这样的,当执行Example1时,命名空间system.collections.generic下的所有类都被加载到内存中或者是什么?这两个例子的表现如何?
Example1:
using System.Collections.Generic;
public interface ICustomer
{
List<Customer> GetAll();
}
Example2:
public interface ICustomer
{
System.Collections.Generic.List<Customer> GetAll();
}
答案 0 :(得分:5)
第一种情况让你在课堂开头宣布你打算在课堂上使用什么(你的偶合)。 IDE和编译器将声明和其他用途用于:
因此,如果不声明它们,您将失去此功能。 这种用途是优选的。它也提高了代码的可读性。 即使Visual Studio没有强烈建议您保持使用清洁(显示警告等等,例如,在基于Java的环境中),最好从上下文菜单中执行“删除未使用的导入”。你的班级档案。
第二种情况允许您使用通过完全限定名称显式引用它的类型。 此案例通常在名称冲突情况下仅使用 。
最后,二进制编译的代码将是相同的,因为编译器会对其进行优化,但如果使用第一种方法,编译过程本身可能会更有效。
答案 1 :(得分:1)
他们是一样的;你不应该担心using
语句,因为它主要影响智能感知性能
同样在名称冲突的情况下,您可以这样做:
using Generic = System.Collections.Generic;
public interface ICustomer
{
Generic.List<Customer> GetAll();
}
答案 2 :(得分:1)
导入名称空间的using语句仅对编译器是必需的。它是一种捷径,因此您无需完全限定所使用的类型。
我更喜欢导入所有名称空间,如果我只在该名称空间中使用一种类型。要删除不需要的命名空间,可以使用Visual Studio的功能来组织命名空间。
答案 3 :(得分:0)
两个示例的行为完全相同(请记住,无论如何它们都被编译为中间代码)。我更喜欢1,但这与清晰度有关,而不是它的表现。
答案 4 :(得分:0)
唯一的区别在于Intellisense。在文件中包含更多using
语句会增加Intellisense索引和显示的内容。我发现示例2的可读性的好处值得Intellisense做的额外工作。
除此之外,两个示例都以相同的方式编译到CIL,并且对性能完全没有影响。
答案 5 :(得分:0)
AFAIK使用它们没有任何实际好处。第二个更加冗长,可能会使阅读代码变得更加困难。如果你必须在你的接口/类中多次引用List类型,我建议你包含相关的命名空间,以减少它的冗长。
答案 6 :(得分:0)
取决于使用情况。如果您有许多具有相同名称的类,例如还有一个名为List
的课程,第二种方法更好(更清晰)。
否则,我更倾向于使用方法1来使用更清洁的产品。格式化的代码。
答案 7 :(得分:0)
如果您认为需要在另一个函数中再创建一个列表 - 您可以使用Example1,
但是如果这是这个列表的唯一实例 - 那么它是Ex1还是Ex2并不重要。
(仅为订单 - 我建议您在Ex1中使用)
而且 - 不,当你使用Using
时 - 并非所有的库都被加载了...加载了什么 - 只是,例如,你调用的List
。
好 - 好运!