使用System.Linq时占用的空间

本文关键字:空间 System Linq 使用 | 更新日期: 2023-09-27 18:01:46

List<T>上的Linq函数非常棒,然而,在我正在处理的这个特定文件中,只有1行使用它。所以我想知道这个库在导入使用时占用了多少空间?(我使用First函数)

如果它占用太多空间,那么创建一个自定义的for循环来迭代是有意义的。但是当使用Linq时,我的代码更干净。

对于内存使用,我认为使用Linq和使用for并没有真正产生太大的差异,所以我想知道磁盘空间使用情况,如果我将在移动设备上的Unity3D中使用它。如果有人能提供一种方法来确定任何系统库的磁盘大小,这将是非常有用的!

使用System.Linq时占用的空间

using指令并没有将任何东西导入到应用程序中。它仅仅是用于使用名称空间的语言结构。如果程序集实际上包含在构建中,那么真正重要的是什么。看这里:

名称空间:系统。Linq

组装:系统。Core(在System.Core.dll中)

所以真正重要的是这个集合是否包含在内。是的,它默认包含在系统中安装的通用程序集中,所以只使用Linq不会使文件变大。

编辑:问题似乎是在单声道和统一的光。理论上,如果你不使用外部库(和一些。net的),你可以在不使用System.Core.dll的情况下构建。net应用程序。但很有可能你必须使用的其他库依赖于它。现在关于mono,看起来mono将System.Core视为特殊的汇编,不需要引用它,它显然是自动完成的:

using System;
using System.Linq;
namespace t1
{
    class MainClass
    {
        public static void Main (string[] args)
        {
            Console.WriteLine (typeof(Enumerable).Assembly.Location);
        }
    }
}

就像dmcs Program.cs一样构建。此外,如果您在Xamarin studio中创建空解决方案,它也可以工作,只有System.dll在参考中。

. net框架已安装在您的计算机上。它没有链接到你的。exe二进制文件。它只是参考,这是相当不同的。

编辑:

关于Baldricks的问题,在使用Unity的移动设备上,应该特别注意额外的依赖关系。他们将把捆绑在到"播放器"中,并增加下载大小。

删除不必要的代码依赖。

http://docs.unity3d.com/Documentation/Manual/iphone-playerSizeOptimization.html

另一方面,LINQ需要System.Core.dll,这对于。net应用程序是必不可少的。所以你的赌注很高,它已经包含和LINQ不会增加现有的下载大小。

using指令将只引用计算机中现有的。net框架。它并不总是导致直接链接或拉出构建中的程序集。引用的程序集确实会导致大小增长。但是,using指令并不告诉编译器包含引用的程序集。但是,通过在项目中引用它们,您可以告诉csc编译器在编译时要链接到的程序集的位置。所以程序集不会被引用,除非我通过项目引用它们,或者除非它们在代码中被实际引用。

刚刚尝试了2020.1版本的unity,在linq内部使用函数后构建大小没有改变。

所以没有影响

相关文章: