使用System.Linq时占用了多少空间?

5ar*_*gon 3 c# linq performance unity-game-engine

Linq函数List<T>很棒,但是,在我正在处理的这个特定文件中,只有一行使用它.所以我想知道这个库在导入使用时占用了多少空间?(我正在使用该First功能.)

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

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

And*_*rey 7

using指令并没有真正将任何内容导入应用程序.它只是使用命名空间的语言构造.如果程序集实际包含在构建中,那么真正重要的是什么.看这里:

命名空间:System.Linq

程序集:System.Core(在System.Core.dll中)

所以真正重要的是如果包括这个组件.是的,它默认包含在系统中安装的常见程序集中,因此只使用Linq就不会使文件变大.

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

using System;
using System.Linq;

namespace t1
{
    class MainClass
    {
        public static void Main (string[] args)
        {
            Console.WriteLine (typeof(Enumerable).Assembly.Location);
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

建立就像那样dmcs Program.cs.此外,如果您在Xamarin工作室中创建空解决方案,它也可以工作,只System.dll在引用中.


Blu*_*ueM 5

.NET 框架安装在您的计算机上。它没有链接到您的 .exe 二进制文件中。它只被引用,这是一个很大的不同。

编辑:

在 Baldricks 问题的后续行动中,在使用 Unity 的移动设备上,应该特别注意额外的依赖项。它们将被捆绑到“播放器”中并增加下载大小。

删除不必要的代码依赖项。

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

另一方面,LINQ 需要System.Core.dll这对于 .NET 应用程序来说是必不可少的。因此,您的赌注很高,它已经包含在内,并且 LINQ 不会增加现有的下载大小。