代码之家  ›  专栏  ›  技术社区  ›  Sergio

`using namespace;`是否消耗更多内存?

  •  7
  • Sergio  · 技术社区  · 15 年前

    Using Namespace; 消耗更多的内存?

    我目前正在开发一个移动应用程序,我只是好奇那些在创建类时不需要使用的语句是否会使我的应用程序需要一些额外的内存来运行。

    7 回复  |  直到 15 年前
        1
  •  14
  •   R. Martinho Fernandes    15 年前

    简而言之:不。

    这些声明没有被翻译成任何形式的IL。它们只是避免使用的捷径(丑陋!)完全限定的类型名。 但是,如果您使用的是VS2008和/或R,则可以自动删除未使用的。

        2
  •  5
  •   Andrew Hare    15 年前

    名称空间是C的一个只在编译时运行的特性,它允许您在开发期间节省时间。这个 using 编译器使用指令在代码中查找速记类型名。

    基本上,每当编译器在代码中遇到一个它不知道的类型名时 使用 指令并将其前置到类型的名称,并查看该完全限定的名称是否解析。

    一旦应用程序被编译,名称空间和 使用 指令不存在,因为IL不需要它们。

        3
  •  3
  •   joshua.ewer    15 年前

    如果说“记忆”,你的意思是“我必须记住为什么我把那些使用语句放在第一位”,那么是的。

    但是,不,不是你的意思。.NET程序集通常是按需加载的,因此使用这些额外语句不会导致任何性能损失。但是,为了可维护性,您需要删除它们。

        4
  •  3
  •   pinkeerach    15 年前

    以下是有关此上下文中“using”关键字的Microsoft信息: http://msdn.microsoft.com/en-us/library/sf0df423.aspx . 它基本上提供了一种在程序集上使用完全限定名的替代方法,但实际上它不使用该特定关键字导入或在内存中包含程序集。

        5
  •  2
  •   casperOne    15 年前

    不,不是。只允许使用类型名

    字符串拼接

    与命名空间限定类型名不同:

    System.Text.StringBuilder

    在声明using语句的文件中。

        6
  •  1
  •   leppie    15 年前

    不,它只会使编译器运行得稍微慢一点:)

        7
  •  0
  •   David Basarab    15 年前

    但事实并非如此。它的使用是为了不必用全名定义正在使用的对象。如果您使用System.io,则可以直接执行文件,而不是System.io.file。

    在实际创建对象之前,它不会加载到内存中。与C++不同,整个库不是导入的,因为.NETFramework是安装在目标机器上并加载在GAC中的,并且您的自定义.dll在应用程序文件夹的bin文件夹中。