List<T>
上的Linq函数非常棒,但是,在我正在处理的这个特定文件中,只有一行使用它。所以我想知道这个库在导入使用时占用了多少空间? (我正在使用First
函数。)
如果它占用太多空间,那么创建一个自定义for
循环代替迭代是有意义的。但是使用Linq时我的代码更清晰。
对于内存使用,我认为使用Linq并使用for
并没有真正发挥那么大的作用,所以如果我想在移动设备上的Unity3D中使用它,我想知道磁盘空间的使用情况。如果任何人都可以提供一种方法来确定任何系统库的磁盘大小,那将非常有用!
答案 0 :(得分:7)
using
指令并未真正将任何内容导入应用程序。它只是使用命名空间的语言构造。如果程序集实际包含在构建中,那么真正重要的是什么。 Look here:
命名空间:System.Linq
程序集:System.Core(在System.Core.dll中)
所以真正重要的是如果包括这个组件。是的,它默认包含在系统中安装的常用程序集中,因此只需使用Linq就不会使文件变大。
编辑:问题似乎是针对单声道和Unity。理论上,如果您不使用外部库(以及一些.net&#39; s),您可以在不使用System.Core.dll
的情况下构建.net应用程序。但很可能你必须使用的其他库依赖于它。现在关于单声道,它看起来像单声道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工作室中创建空解决方案,它也可以工作,只有System.dll
在引用中。
答案 1 :(得分:4)
您的计算机上安装了.NET框架。它没有链接到您的.exe二进制文件。它仅被引用,这是非常不同的。
编辑:
在Baldricks问题的后续问题中,在使用Unity的移动设备上,应该特别注意其他依赖关系。他们将捆绑加入&#34;播放器&#34;并添加下载大小。
删除不必要的代码依赖项。
http://docs.unity3d.com/Documentation/Manual/iphone-playerSizeOptimization.html
另一方面,LINQ需要System.Core.dll
,这对.NET应用程序至关重要。因此,您的赌注很高,已经包含在内,LINQ不会增加现有的下载量。
答案 2 :(得分:1)
using指令只是引用计算机中现有的.Net Framework。它不会总是导致直接链接或拉动构建中的程序集。 参考组件确实会导致尺寸增长。 但是,using指令并不告诉编译器包含引用的程序集。 但是,通过在项目中引用它们,您告诉csc编译器在编译时要在哪里找到要链接的程序集。 因此,除非我通过项目引用它们,否则不会引用程序集,除非它们在代码中实际引用。
答案 3 :(得分:1)
只需尝试使用 unity 的2020.1版本,并且在linq中使用函数后,构建大小就不会更改。
所以没有影响。