Tag: C#的

最快的方法来清零C中的二维数组?

我想用C重复一个大的二维数组。这就是我现在所做的: // Array of size n * m, where n may not equal m for(j = 0; j < n; j++) { for(i = 0; i < m; i++) { array[i][j] = 0; } } 我试过使用memset: memset(array, 0, sizeof(array)) 但是这只适用于一维数组。 当我打印二维数组的内容时,第一行是零,但随后我得到了大量的随机数,它崩溃了。

如何用c#扩展方法扩展一个类?

扩展方法可以应用于课堂吗? 例如,扩展DateTime以包含Tomorrow()方法,该方法可以被调用,如: DateTime.Tomorrow(); 我知道我可以使用 static DateTime Tomorrow(this Datetime value) { //… } 要么 public static MyClass { public static Tomorrow() { //… } } 对于类似的结果,但我怎样才能扩展date时间,以便我可以调用DateTime.Tomorrow?

退出buttonclosuresC#窗体窗体

我已经尝试了以下内容: private void Form1_KeyDown(object sender, System.Windows.Forms.KeyEventArgs e) { if ((Keys) e.KeyValue == Keys.Escape) this.Close(); } 但它不起作用。 然后我试了这个: protected override void OnKeyDown(KeyEventArgs e) { base.OnKeyDown(e); if (e.KeyCode == Keys.Escape) this.Close(); } 而且还没有工作。 我的Windows窗体表单属性上的KeyPreview设置为true …我做错了什么?

我如何将分笔转换为分钟?

我有一个280亿分钟的价值,这应该是480分钟,但我怎么能确定? 如何将蜱数值转换为分钟数?

在int中枚举枚举的通用方法

有没有一种通用的方式来int enum在C++ enum ? 如果int落在一个enum范围内,它应该返回一个enum值,否则抛出一个exception 。 有没有一种方法来一般地写? 应该支持多于一个enum type 。 背景:我有一个外部枚举types, 不能控制源代码。 我想将这个值存储在数据库中并检索它。

如何dynamic新的匿名类?

在C#3.0中,您可以使用以下语法创build匿名类 var o1 = new { Id = 1, Name = "Foo" }; 有没有办法dynamic创build这些匿名类到variables? 例: var o1 = new { Id = 1, Name = "Foo" }; var o2 = new { SQ = 2, Birth = DateTime.Now }; dynamic创build示例: var o1 = DynamicNewAnonymous(new NameValuePair("Id", 1), new NameValuePair("Name", "Foo")); var o2 = DynamicNewAnonymous(new NameValuePair("SQ", 2), […]

在Linux上开发C#

我想知道是否有有效的开源工具在Linux(Ubuntu)上开发C#应用程序。 特别是我必须开发WinForm应用程序。 我知道Mono项目 ,但我从来没有使用它。 你能告诉我什么是最好的工具(IDE,编译器等)在Ubuntu上build立一个.NET开发环境吗? Linux上运行的软件是在Windows上运行的吗? 有不同的行为或不兼容?

为什么memmove比memcpy更快?

我正在调查一个应用程序中的性能热点,这个应用程序在memmove(3)中花费了50%的时间。 应用程序将数百万个4字节的整数插入到已sorting的数组中,并使用memmove将数据“向右移动”,以便为插入值腾出空间。 我的期望是复制记忆速度非常快,我惊讶于花费了太多的时间。 但是后来我有一个想法,就是memmove很慢,因为它正在移动重叠的区域,必须在严格的循环中执行,而不是复制大量的内存。 我写了一个小的微型基准来看看memcpy和memmove之间是否存在性能差异,希望memcpy赢得双手。 我在两台机器(核心i5,核心i7)上运行我的基准testing,看到memmove实际上比memcpy更快,在旧的核心i7上甚至快了近一倍! 现在我正在寻找解释。 这是我的基准。 它用memcpy复制100 MB,然后用memmove移动大约100 MB。 来源和目的地重叠。 尝试了源和目的地的各种“距离”。 每个testing运行10次,平均时间打印。 https://gist.github.com/cruppstahl/78a57cdf937bca3d062c 以下是Core i5(Linux 3.5.0-54-generic#81〜precise1-Ubuntu SMP x86_64 GNU / Linux,gcc是4.6.3(Ubuntu / Linaro 4.6.3-1ubuntu5)的结果。括号内的数字是源和目标之间的距离(间隙大小): memcpy 0.0140074 memmove (002) 0.0106168 memmove (004) 0.01065 memmove (008) 0.0107917 memmove (016) 0.0107319 memmove (032) 0.0106724 memmove (064) 0.0106821 memmove (128) 0.0110633 Memmove是作为SSE优化的汇编代码实现的,从后向前复制。 它使用硬件预取将数据加载到caching中,并将128个字节复制到XMM寄存器,然后将其存储在目标处。 ( memcpy-ssse3-back.S ,第1650行ff) L(gobble_ll_loop): […]

什么时候额外的括号会影响运算符的优先级?

C ++中的括号用在许多地方:例如在函数调用和分组expression式中覆盖运算符优先级。 除了非法的额外括号 (比如函数调用参数列表)之外,C ++的一个通用但不是绝对的规则就是额外的括号不会受到伤害 : 5.1主expression式[expr.prim] 5.1.1一般[expr.prim.general] 6加括号的expression式是一个主expression式,其types和值与所附expression式的types和值相同。 括号的存在不影响expression式是否左值。 带括号的expression式可以用在与包含的expression式可以使用的expression式完全相同的上下文中, 除非另有说明,否则使用相同的含义。 问题 :除了覆盖基本的运算符优先级之外,在哪些上下文中,额外的括号会改变C ++程序的含义? 注 :我认为指针到成员语法限制为不带圆括号的&qualified-id超出范围,因为它限制了语法,而不是允许两个含义不同的语法。 同样, 在预处理器macros定义中使用括号也可以防止不需要的运算符优先级。

C#事件是否同步?

这个问题有两个部分: 提升一个事件是否会阻塞线程,或者是asynchronous启动EventHandlers的执行,并且线程继续同时运行? 各个EventHandler (订阅的事件)是否一个接一个地同步运行,还是asynchronous运行,不能保证其他人不能同时运行?