小编hom*_*347的帖子

C#排序列表同时还返回原始索引位置?

我有兴趣对一个集合进行排序,但也返回一个索引,该索引可用于映射到集合中的原始位置(排序之前).

让我举一个例子来说明一点:

List<int> A = new List<int>(){3,2,1};
List<int> B;
List<int> idx;

Sort(A,out B,out idx);
Run Code Online (Sandbox Code Playgroud)

之后:

A = [3,2,1] 
B = [1,2,3]
idx = [2,1,0]
Run Code Online (Sandbox Code Playgroud)

所以A,B,idx之间的关系是:

A[i] == B[ idx[i] ] ,因为i = 0 ... 2

C#/ .Net是否有任何内置机制使其易于实现?

谢谢.

.net c# sorting collections

31
推荐指数
3
解决办法
3万
查看次数

C#字符串格式化和填充

看起来这应该是直截了当的,但我无法做到正确.我查看了http://idunno.org/archive/2004/14/01/122.aspx以供参考.

示例:我想打印一个double值表,每个double输出具有3个十进制精度,并占用10个空格(左对齐).从概念上讲,我尝试过这样的东西,但它只适用于精确的OR填充,而不是两者:

foreach(line in lines)
{
    foreach (double val in line)
    {
         Console.Write("{0:0.000,-10}", val);
    }

    Console.WriteLine()
}
Run Code Online (Sandbox Code Playgroud)

更新:我可以在非常简单的场景中使用padleft/padright,如果我有更复杂的输出它变得不是很简洁.是否有类似于sprintf的东西?

c# string string-formatting

4
推荐指数
1
解决办法
4903
查看次数

从32位开发到64位开发,需要澄清.net框架和平台

快速背景:我在Vista-x64机器上的.net 3.5下在VS2008中开发C#

我最近切换到Vista-x64并经过一些搜索,我仍然觉得我并不完全理解OS和.net框架之间的相互作用.我想对此进行一些更正/澄清.

以下是我对开发过程的理解(如果我弄错了,请更正):

当我设置我的项目时,我可以设置平台目标:x64,x86,AnyCpu.据我了解,AnyCpu将针对当前平台(在我的情况下为x64).我也可以定位x86并仍然执行它(由于WoW64).

我假设当我定位x64时,程序将使用64位.net框架3.5,以及x86的类似32位框架.它是否正确?

令我困惑的是,当我定位x64并打印出平台信息时,它会打印" WIN32NT ".这让我相信" WIN32NT "不是我认为的那样,但我还没有找到很多关于这一点.这是什么?

ComputerInfo computerInfo = new ComputerInfo();
Console.WriteLine("{0,-30}:\t{1}", "Platform", computerInfo.OSPlatform);
Run Code Online (Sandbox Code Playgroud)

谢谢.

.net x86-64 32bit-64bit

3
推荐指数
1
解决办法
1424
查看次数