我有2个int数组.
int[] data1 #
int[] data2 #
Run Code Online (Sandbox Code Playgroud)
我想创建第3个int [] data3,这是其他2个数组之间的差异.
让我们取data1中的第一个值.
值为15(例如).
现在让我们在data2中取第一个值.
值为3(例如).
data3中的第一个值为12.
但是,如果第一个值是相反的,即
data1[0] = 3
data2[0] = 15
Run Code Online (Sandbox Code Playgroud)
然后差异将是-12.但我希望它只有12岁.
目前我有一个for循环,我在那里做计算的东西来获得那种类型的结果.
谢谢
NB回应'关闭者'.我同意你的观点.我需要在这个问题上添加的是:
我正在寻找最有效(最快的方式,但低内存是第二优先)来促进这一点.使用Linq(据我所知)可能是最慢的方法?
由于您需要在创建时输入数组的长度,我认为它需要一个可靠,连续的内存块.List可以动态扩展,这是否意味着它不需要连续的内存分配?这是否意味着List不太可能抛出"Out of Memory"异常?
鉴于此类:
public class Parent
{
public Child[] Children {get;set;}
}
Run Code Online (Sandbox Code Playgroud)
这个数组:
Parent[] parents;
Run Code Online (Sandbox Code Playgroud)
如何使用Linq或其他方法从父数组中检索所有子项?这看起来很糟糕:
IList<Child> children = new List<Child>();
foreach(var parent in parents)
children.AddRange(parent.Children);
Run Code Online (Sandbox Code Playgroud)
或者那不是那么糟糕?:-)
我正在阅读两个文件,并比较它们和我意识到需要考虑的事情之一是删除间距,因为它导致差异,我不希望间距是差异的一个方面,所以我想删除它.
这是我到目前为止:
Dictionary<string, int> Comparer = new Dictionary<string, int>();
string line;
using (StreamReader sr = new StreamReader(openFileDialog1.FileName))
{
while (sr.Peek() >= 0 )
{
line = sr.ReadLine();
if (Comparer.ContainsKey(line))
Comparer[line]++;
else
Comparer[line] = 1;
}
}
using (StreamReader sr = new StreamReader(openFileDialog2.FileName))
{
while (sr.Peek() >= 0)
{
line = sr.ReadLine();
if (Comparer.ContainsKey(line))
Comparer[line]--;
else
Comparer[line] = -1;
}
}
int mismatches = 0;
var firstFileChanges = new List<string>();
var secondFileChanges = new List<string>();
System.Text.StringBuilder theStringBuilder = new System.Text.StringBuilder();
foreach …Run Code Online (Sandbox Code Playgroud)