gpt4 book ai didi

c# - 在每个页面中使用 namespace 是否是一种不好的做法/降低性能或内存使用

转载 作者:太空狗 更新时间:2023-10-30 01:23:03 36 4
gpt4 key购买 nike

在 C# 中,我们编写 using System.IO 或我们想要使用的任何其他命名空间。

那么这是个坏习惯吗,会影响性能还是内存?

或者为它们创建包装类并使用它来避免在所有地方使用相同的命名空间是否好?

最佳答案

在 .Net 中,命名空间始终是每个类型名称的组成部分。但是,如果每次声明某种类型时都必须指定整个 namespace ,就会在代码中造成大量重复和干扰。这就是 using 指令的用途,它基本上将所有前缀折叠到一个地方,让您指定类型的“最后”部分。只有在没有歧义的情况下才能这样做。

然而,编译器并不关心以上内容。因此存在一个预编译阶段,其中依赖于 using 指令的每个类型声明都会取回其前缀。

所以当你说:

Using System;

void foo()
{
String s1 = "bla";
String s2 = "bli";
}

预编译中发生的是将 System 命名空间附加到每个 String 声明,如下所示:

void foo()
{
System.String s1 = "bla";
System.String s2 = "bli";
}

直到现在编译器才真正发挥作用。

关于性能,从技术上讲,它会影响构建过程的性能。你使用的越多,预编译阶段需要做的匹配就越多:所以编译器看到的是StringString 是什么?是 System.String 还是 SomeOtherNamespace.String?真正发生的是,编译器将它在使用中找到的每个命名空间附加到类型声明中,并检查是否存在这样的类型。如果是 - 很好,如果不是 - 它会尝试下一个命名空间。

所以你看,如果你有很多文件有未使用的 using 声明,编译器必然会做多余的工作。在极端情况下,它会显着降低构建本身的性能。

一般来说,从不犹豫使用你正在使用的东西(没有双关语意)。但是您应该避免声明不必要的 using 指令,这不仅是因为对构建持续时间的潜在(不太可能)性能影响,还因为您希望尽可能保持代码整洁。

关于c# - 在每个页面中使用 namespace 是否是一种不好的做法/降低性能或内存使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12332359/

36 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com