下午好,
有人可以告诉我,如果我在C#中使用lambda表达式时可以设置默认参数值吗?例如,如果我有代码
public static Func<String, Int32, IEnumerable<String>> SomeFunction = (StrTmp, IntTmp) => { ... },
Run Code Online (Sandbox Code Playgroud)
如何将IntTmp默认值设置为,例如,两个?在方法中设置默认参数值的常用方法似乎不适用于这种表达式(我在这里真的需要这样的一种).
非常感谢你.
早上好,下午或晚上,
还是建立在我的问题关于不可变的字典在.NET中,我提出了以下问题:而如果再TKey和TValue是值类型,你可以做一个真正的字典不可改变的,在这个意义上,无论是它的内部结构也不值本身可以改变,如果这些参数是引用类型键,则可以轻松更改值,从而更改字典本身.我对吗?
非常感谢你.
下午好,
有没有人知道在.NET 中使用Levenshtein DFA(确定性有限自动机)的"开箱即用"实现(或者很容易翻译)?我有一个非常大的字典,有超过160000个不同的单词,我希望,给出一个内在的单词w,以高效的方式在Levenshtein距离中找到所有已知单词最多2个w.
当然,具有在编辑距离处计算所有可能编辑的功能,给定单词中的一个并将其再次应用于这些编辑中的每一个解决了该问题(并且以非常简单的方式).问题是效率刍议---给予7字母的单词,这已经可以采取超过1秒即可完成,而我需要的东西很多更有效的---如果可能的话,因为它与莱文斯坦的DFA,这需要O(解决方案| w |)步骤.
编辑:我知道我可以通过一些学习来构建我自己的问题方法,但目前我无法负担阅读Schulz和Mihov长达60页的文章.
非常感谢你.
.net performance automata finite-automata levenshtein-distance
下午好,让我说我有枚举
public enum Test : int
{
TestValue1 = 0,
TestValue2,
TestValue3
}
Run Code Online (Sandbox Code Playgroud)
为什么我不能使用Int32 IntTest = Test.TestValue1没有强制转换的语句IntTest = 0?如果我稍后决定在枚举中添加更多项目会很有用吗?我想我被迫使用Int32 IntTest = (Int32) Test.TestValue1,我认为这应该是多余的......而且,为什么我不能做出类似的东西
switch (IntTest)
{
case (Test.TestValue1) : DoSomething();
break;
case (Test.TestValue2) : DoSomethingElse();
break;
default : Do Nothing();
}
Run Code Online (Sandbox Code Playgroud)
?编译器说它期望一个恒定值代替TestValue1......这个值是不是恒定不变?
非常感谢你.
下午好,
正如我之前在另一篇文章中所说,我必须计算地图中某些点之间的大约8,000,000个最短时间/路径距离,其坐标是已知的.问题在于,虽然直线距离很容易(并且很快)计算,但是有人告诉我单线程应用程序在使用MapPoint计算这个距离时会遇到问题.问题是我对多线程一无所知......我目前正在研究i7 - 720QM环境,所以我想使用所有4个内核来进行这些计算......有没有简单的方法来做这个在C#或C++中?
非常感谢你.
早上好,下午或晚上,
要么在MSIL或JIT编译器更换之类的东西1 << 5或1 << 31与代码32和2147483648分别,否则他们将等待执行的方法来评估这些常量"及时",因为它们涉及到其他的方法(经营者)?
非常感谢你.
有什么方法可以测量程序造成的内存压力,以及后台执行GC的次数吗?
DATETIME如何以编程方式检索 SQL Server 2005 中数据类型的最大值?我不想用作NULL列值,也不想使用CONVERT(DATETIME, '12/31/9999 23:59:59.997')。
非常感谢。
下午好,
我有一些文本文件,其中包含通过分析报纸文章集合收集的(2克,计数)对的列表,当我启动我正在开发的给定应用程序时,我需要将其加载到内存中.要存储这些对,我使用的结构类似于以下结构:
private static Dictionary<String, Int64>[] ListaDigramas = new Dictionary<String, Int64>[27];
Run Code Online (Sandbox Code Playgroud)
拥有一系列字典的意思是效率问题,因为我在某处读到长字典会对性能产生负面影响.也就是说,每2克进入字典,对应于它的第一个字符的ASCII码减97(如果第一个字符不是'a'到'z'范围内的字符,则为26).
当我将(2-gram,count)对加载到内存中时,应用程序需要总共800Mb的RAM,并保持这样,直到我使用一个名为Memory Cleaner的程序来释放内存.在此之后,程序占用的内存下降到7Mb-100Mb的范围,而不会失去功能(我认为).
有没有办法可以通过这种方式释放内存但不使用外部应用程序?我尝试使用GC.Collect()但在这种情况下不起作用.
非常感谢你.
早上好,下午或晚上,
直到今天,我认为比较是基本的处理器指令之一,因此它是计算机中可以做的最快的操作之一...另一方面,我知道乘法有时比较棘手并涉及大量的位操作.但是,看到以下代码的结果我有点震惊:
Stopwatch Test = new Stopwatch();
int a = 0;
int i = 0, j = 0, l = 0;
double c = 0, d = 0;
for (i = 0; i < 32; i++)
{
Test.Start();
for (j = Int32.MaxValue, l = 1; j != 0; j = -j + ((j < 0) ? -1 : 1), l = -l)
{
a = l * j;
}
Test.Stop();
Console.WriteLine("Product: {0}", Test.Elapsed.TotalMilliseconds);
c += Test.Elapsed.TotalMilliseconds;
Test.Reset();
Test.Start();
for (j …Run Code Online (Sandbox Code Playgroud) c# ×8
.net ×2
performance ×2
automata ×1
casting ×1
cil ×1
dictionary ×1
enums ×1
immutability ×1
jit ×1
lambda ×1
mappoint ×1
memory ×1
operators ×1