小编Tam*_*red的帖子

使用LINQ时,&&和where where子句有什么区别?

我是LINQ的新手,昨天发现你可以有多个where子句,例如:

var items = from object in objectList
where object.value1 < 100  
where object.value2 > 10  
select object;
Run Code Online (Sandbox Code Playgroud)

或者你可以写:

var items = from object in objectList
where object.value1 < 100  
   && object.value2 > 10  
select object;
Run Code Online (Sandbox Code Playgroud)

两者有什么区别?

.net c# linq

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

奇怪的表现行为

所以我有这两种方法,假设将1000项长整数数组乘以2.第一种方法:

[MethodImpl(MethodImplOptions.NoOptimization)]
Power(int[] arr)
{
    for (int i = 0; i < arr.Length; i++)
    {
        arr[i] = arr[i] + arr[i];
    }
}
Run Code Online (Sandbox Code Playgroud)

第二种方法:

[MethodImpl(MethodImplOptions.NoOptimization)]
PowerNoLoop(int[] arr)
{
    int i = 0;
    arr[i] = arr[i] + arr[i];
    i++;
    arr[i] = arr[i] + arr[i];
    i++;
    arr[i] = arr[i] + arr[i];
    i++;
    ............1000 Times........
    arr[i] = arr[i] + arr[i];
}
Run Code Online (Sandbox Code Playgroud)

请注意,我仅将此代码用于性能研究,这就是为什么它看起来如此恶心.

令人惊讶的结果是,PowerPowerNoLoop我们检查了IL两者的反编译源并且for循环的内容与每行完全相同的速度快了近50%PowerNoLoop.怎么会这样?

c# performance cil

15
推荐指数
1
解决办法
303
查看次数

如何将字节数组转换为任何类型

好球员,我从询问如何转换字节数组人看到的问题int,string,Stream,等...而这些问题的答案都不同,我曾亲自没有发现任何令人满意的答案.

所以这里有一些我们想要将字节数组转换为的类型.

UnityEngine.Font哪个可以接收ttf数据.

UnityEngine.Testure2D其中H可采取数据从如图片文件.png,.jpg等...

我们将如何转换为字节数组到String,UnityEngine.Testure2D,UnityEngine.Font,Bitmap,等...

填充字节数组的数据必须来自一个文件类型,其数据可以通过我们要将字节数组转换为的类型来管理?

这目前可能吗?

任何帮助,将不胜感激.

c# arrays byte

15
推荐指数
1
解决办法
2万
查看次数

我们能获得代表的身份吗?

是否有可能生成委托的标识以区别于其他委托?想想这段代码:

Func<int, int, int> delegate1 = a, b => a + b;
Func<int, int, int> delegate2 = a, b => a + b;
Func<int, int, int> delegate3 = a, b => a - b;
let id1 = id(delegate1);
let id2 = id(delegate2);
let id3 = id(delegate3);
Assert(id1 == id2);
Assert(id1 != id3);
Run Code Online (Sandbox Code Playgroud)

我想解决的问题是,我想在.NET中缓存一些JIT编译的GPU代码.为了方便使用,我想让用户发送委托,如果委托是相同的,我们会尝试从缓存中找出GPU代码,而不是每次JIT编译它:

Parallel(outputA, inputA1, inputA2, a, b => a + b); //should JIT compile GPU code, and cache it by its identity
Parallel(outputB, inputB1, inputB2, a, b => a …
Run Code Online (Sandbox Code Playgroud)

.net c# delegates

14
推荐指数
1
解决办法
706
查看次数

Observable.FromAsync vs Task.ToObservable

有没有人知道何时使用其中一种方法而不是另一种方法.他们似乎做同样的事情,因为他们转换TPL TaskObservable.

Observable.FromAsync 似乎支持取消令牌,这可能是微妙的差异,如果处置了可观察量,则允许生成任务的方法参与合作取消.

只是想知道我是否遗漏了一些明显的问题,为什么你要使用一个而不是另一个.

谢谢

.net c# system.reactive

12
推荐指数
3
解决办法
6843
查看次数

C#7.0"解构主义者"

我正在阅读有关C#7.0新内容的内容,至少从给出的示例中我不能理解,"解构器"的用法是什么.

它只是语法糖吗?

如果有人可以对此有所了解,那就太好了.

c# c#-7.0

12
推荐指数
1
解决办法
4878
查看次数

从编译器的角度来看,字符串是什么样的?

C,编译器有一个指向字符串开头的指针,并有一个结束符号('\0').如果用户想要计算字符串的长度,则编译器必须计算字符串数组的元素,直到找到它为止'\0'.

UCSD-strings,编译器具有第一个符号中字符串的长度.

编译器会考虑什么C#-strings?是的,从用户的角度Stringobject,有一个领域Length,我不是在谈论高层次的东西.我想知道深度算法; 例如,编译器如何计算字符串的长度?

.net c# memory compiler-construction string

11
推荐指数
2
解决办法
971
查看次数

IDA*与A*算法有什么关系?

我不明白如何IDA*节省内存空间.从我的理解IDA*A*迭代加深.

什么是内存量之间的差额A*使用VS IDA*.

最后一次迭代的IDA*行为是否完全相同A*并且使用相同数量的内存.当我跟踪时,IDA*我意识到它还必须记住低于f(n)阈值的节点的优先级队列.

我知道ID-Depth第一次搜索有助于深度优先搜索,允许它首先像搜索一样进行广度,而不必记住每个节点.但我认为它的A*行为首先就像深度一样,因为它忽略了沿途的一些子树.迭代加深如何使用更少的内存?

另一个问题是使用迭代加深的深度优先搜索允许您通过使其首先表现为宽度来找到最短路径.但A*已经返回最佳最短路径(假设启发式是可接受的).迭代加深如何帮助它.我觉得IDA*的最后一次迭代与之相同A*.

algorithm a-star path-finding

11
推荐指数
1
解决办法
9481
查看次数

如何根据订购排序

可以说我有物品

items : [{id:1,...}, {id:2,...}, {id:3,...}]
Run Code Online (Sandbox Code Playgroud)

命令:[ 2,3,1 ]得到一个可枚举的

items : [{id:2,...}, {id:3,...}, {id:1,...}]
Run Code Online (Sandbox Code Playgroud)

我希望它能成为符合标准的东西

items.Select(o => new {key = ordering[i++], value = o})
     .OrderBy(k => k.key)
     .Select(o => o.value)
Run Code Online (Sandbox Code Playgroud)

但有更清洁的解决方案吗?


以下我已经确认了这项工作(HimBromBeere,Domysee,qxg)

var expectedOrder = ordering.Select(x => result.First(o => o.Id == x));
var expectedOrder = result.OrderBy(item => Array.FindIndex(ordering,i => i == item.Id));
var expectedOrder = result.OrderBy(item => ordering.ToList().FindIndex(i => i == item.Id));
var expectedOrder = 
  from o in ordering
  join i in result 
    on o equals i.Id
  select …
Run Code Online (Sandbox Code Playgroud)

.net c# lambda

10
推荐指数
1
解决办法
444
查看次数

Windows窗体图标未显示在任务栏C#

我正在为我创建的表单添加一个Icon.当我通过VS2012运行程序时,图标显示在任务栏上.但在发布项目并安装后,图标将显示在"表单"边框中,但不会显示在任务栏中.我在这做错了什么?

我试过调整图标大小.

.net c# winforms

9
推荐指数
2
解决办法
2万
查看次数