小编Rob*_* P.的帖子

是161803398一个'特殊'号码?在Math.Random()里面

我怀疑答案是' 因为数学 ',但我希望有人能在基层提供更多的见解......

我今天在BCL源代码中探讨,看看我之前使用过的某些类是如何实际实现的.我以前从未想过如何生成(伪)随机数,所以我决定看看它是如何完成的.

完整来源:http://referencesource.microsoft.com/#mscorlib/system/random.cs#29

private const int MSEED = 161803398; 
Run Code Online (Sandbox Code Playgroud)

每次播种Random()类时都会使用此MSEED值.

无论如何,我看到了这个"神奇的数字" - 161803398 - 而且我没有最简单的想法为什么选择这个数字.它不是一个素数或2的幂.对于一个似乎更重要的数字而言,它不是"中途".我用二进制和十六进制看了它,它看起来像是一个数字给我.

我试着在谷歌搜索这个号码,但我一无所获.

.net c# random algorithm

163
推荐指数
2
解决办法
9747
查看次数

"字符串"定义背后的历史

直到最近我才想到,但我不确定为什么我们称弦strings.我是.NET程序员,但我相信字符串的概念几乎存在于每种编程语言中.

在编程之外,我不相信我听过string用于描述单词或字母的单词.一个快速的Google,'定义:字符串'产生了一系列与字母,单词或与编程相关的任何性质概念无关的定义.

我的猜测是,在当天,字符串实际上只是特定长度的字符数组,最后通常带有分隔字符.但是,我没有看到从'字符数组'到...的自然过渡string.

有人能为我们调用字符串的原因提供一些见解strings吗?

string history programming-languages terminology

67
推荐指数
6
解决办法
6348
查看次数

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

?? Null Coalescing Operator - >合并是什么意思?

我很想撒谎并说英语是我的第二语言,但事实是我只是不知道'合并'是什么意思.我知道??C#中的"做什么",但这个名字对我来说没有意义.

我查了一下这个词,我理解它是'join'的同义词.'Null Join Operator'仍然没有意义.

有人可以开导我吗?

c# terminology coalesce null-coalescing-operator

44
推荐指数
4
解决办法
4472
查看次数

为什么有些关闭比其他关闭更友好?

让我提前道歉 - 我可能正在屠杀术语.我对闭包是什么有一个模糊的理解,但无法解释我所看到的行为.至少,我认为这是一个封闭问题.我在线搜索,但没有找到合适的关键字来获得我想要的东西.

具体来说 - 我有两个非常相似的代码块(至少在我看来).第一:

static void Main(string[] args)
{
    Action x1 = GetWorker(0);
    Action x2 = GetWorker(1);
}

static Action GetWorker(int k)
{
    int count = 0;

    // Each Action delegate has it's own 'captured' count variable
    return k == 0 ? (Action)(() => Console.WriteLine("Working 1 - {0}",count++))
                  : (Action)(() => Console.WriteLine("Working 2 - {0}",count++));
}
Run Code Online (Sandbox Code Playgroud)

如果运行此代码并调用x1()和x2(),您将看到它们保持单独的"count"值.

    foreach(var i in Enumerable.Range(0,4))
    {
        x1(); x2(); 
    }
Run Code Online (Sandbox Code Playgroud)

输出:

Working 1 - 0
Working 2 - 0
Working 1 - 1 …
Run Code Online (Sandbox Code Playgroud)

.net c# delegates closures

34
推荐指数
3
解决办法
2610
查看次数

如何取消长时间运行的数据库操作?

目前正在与Oracle合作,但也需要一个MS SQL解决方案.

我有一个GUI,允许用户生成将在数据库上执行的SQL.这可能需要很长时间,具体取决于它们生成的搜索.我希望GUI/App在此搜索期间能够响应,我希望用户能够取消搜索.

我正在使用后台工作线程.

我的问题是,当用户取消搜索时,我无法中断对数据库的调用.它等待它完成然后,它可以轮询'CancelationPending'属性.这不仅浪费了数据库上的资源,而且还为我的代码带来了问题.

如果用户在非常长的查询中点击"搜索",则再次点击"取消",然后再次"搜索" - 第一次搜索仍然在数据库上进行搜索.后台工作人员再次点击搜索时仍然很忙.我遇到这个问题的唯一方法就是建立一个新的后台工作者.

这似乎是一种非常丑陋的做事方式.数据库继续工作我正在创建后台工作者的新实例....当我真的想要停止数据库调用并重新使用同一个worker时.

我怎样才能做到这一点?

.net database oracle asynchronous backgroundworker

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

XDocument.Descendants()与DescendantNodes()

我看过Nodes()vs DescendantNodes()用法?看看和之间的区别.Nodes(),.DescendantNodes()但有什么区别:

XDocument.Descendants()和XDocument.DescendantNodes()?

var xmlDoc = XDocument.Load(@"c:\Projects\Fun\LINQ\LINQ\App.config");        
var descendants = xmlDoc.Descendants();
var descendantNodes = xmlDoc.DescendantNodes();

foreach (var d in descendants)
    Console.WriteLine(d);

foreach (var d in descendantNodes)
    Console.WriteLine(d);
Run Code Online (Sandbox Code Playgroud)

c# xml linq-to-xml

23
推荐指数
2
解决办法
9467
查看次数

数独有效性检查算法 - 此代码如何工作?

我正在阅读这里发布的一个问题:C#中的数独算法

其中一个解决方案是这段代码.

public static bool IsValid(int[] values) {
        int flag = 0;
        foreach (int value in values) {
                if (value != 0) {
                        int bit = 1 << value;
                        if ((flag & bit) != 0) return false;
                        flag |= bit;
                }
        }
        return true;
}
Run Code Online (Sandbox Code Playgroud)

这个想法是它将检测值数组中的重复项; 但是我不知道有多少我不知所措.谁可以给我解释一下这个?

编辑:谢谢大家.这么多很棒的答案,我不知道如何选择一个.它现在非常有意义.

.net c# algorithm sudoku

19
推荐指数
2
解决办法
5566
查看次数

理解文本编码(在.Net中)

我对Text的编码做的很少.说实话,我甚至不知道它究竟意味着什么.

例如,如果我有类似的东西:

Dim myStr as String = "Hello"
Run Code Online (Sandbox Code Playgroud)

这是以特定格式在内存中"编码"的吗?这种格式取决于我使用的语言吗?

如果我在另一个国家,比如中国,我有一串中文(普通话?如果我在这里使用了错误的词语,我道歉)下面的代码(我在英文字符串上使用得很好)还是一样吗?

System.Text.UTF8Encoding encoding=new System.Text.UTF8Encoding();
return encoding.GetBytes(str);
Run Code Online (Sandbox Code Playgroud)

或者当转换无效时将.Net字符串转换为UTF8Encoding时会失去所有意义吗?

最后,我已经与.Net合作了几年,而且我从未见过,听说过或者不得不对编码做任何事情.我是例外,还是不常见的事情?

.net c# vb.net encoding text

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

在Unix中调用fork()时会发生什么?

我试着仔细研究一下,但是在调用fork()之后,我正在努力理解父进程和子进程之间的关系.

它们是完全独立的进程,只与id/parent id相关联吗?或者他们共享记忆?例如,每个进程的"代码"部分是重复的,以便每个进程都有自己的相同副本,或者以某种方式'共享'以便只存在一个?

我希望这是有道理的.

以完全披露的名义,这是"与家庭作业相关"; 虽然不是书中的直接问题,但我感觉它主要是学术性的,在实践中,我可能不需要知道.

c unix fork process

18
推荐指数
3
解决办法
9348
查看次数