Tag: C#的

如何通过可变参数模板函数的异构参数包进行generics计算?

前提: 在玩了各种各样的模板之后,我意识到,实现任何超出微不足道的元编程任务的东西都将变得非常麻烦。 特别是,我发现自己希望有一种方法来执行generics操作,比如迭代 , 分割 , 循环等 std::for_each方式,等等。 在看了C ++和Beyond 2012 的Andrei Alexandrescu关于static if从C语言中借用一个构造)的愿望之后,我感觉到某种static for也会变得方便 – 我感觉更多这些static结构可以带来好处。 所以我开始想知道是否有一种方法来实现类似于 variadic模板函数( 伪代码 )的参数包: template<typename… Ts> void my_function(Ts&&… args) { static for (int i = 0; i < sizeof…(args); i++) // PSEUDO-CODE! { foo(nth_value_of<i>(args)); } } 在编译时会翻译成这样的内容: template<typename… Ts> void my_function(Ts&&… args) { foo(nth_value_of<0>(args)); foo(nth_value_of<1>(args)); // … foo(nth_value_of<sizeof…(args) […]

C中的滚动中值algorithm

我目前正在研究一种algorithm来实现C中滚动中值滤波器(类似于滚动平均滤波器)。从我的文献search中,似乎有两种合理有效的方法来实现它。 首先是对初始值窗口进行sorting,然后执行二进制search以插入新值,并在每次迭代中删除现有值。 第二个(来自Hardle和Steiger,1995,JRSS-C,algorithm296)构build了一个双头堆结构,一头是maxheap,另一头是minheap,中间是中间的。 这产生一个线性时间algorithm,而不是O(n log n)。 这是我的问题:执行前者是可行的,但是我需要在数百万个时间序列上运行这个,所以效率非常重要。 后者certificate很难实施。 我在R的stats包的代码的Trunmed.c文件中发现了代码,但这是相当难以理解的。 有没有人知道线性时间滚动中值algorithm的一个精心编写的C实现? 编辑:链接到Trunmed.c代码http://google.com/codesearch/p?hl=zh-CN&sa=N&cd=1&ct=rc#mYw3h_Lb_e0/R-2.2.0/src/library/stats/src/Trunmed.c

如何解决“引用的程序集没有强名称”的错误?

我已经添加了一个弱命名的程序集到我的Visual Studio 2005项目(这是强烈命名)。 我现在得到的错误: “引用程序集”xxxxxxxx“没有强名” 我是否需要签署这个第三方程序集?

为什么在接口上定义的C#4可选参数没有被强制实现类?

我注意到,如果在一个接口中指定一个参数为可选参数,那么使用C#4中的可选参数,您不必在任何实现类上使该参数为可选参数: public interface MyInterface { void TestMethod(bool flag=false); } public class MyClass : MyInterface { public void TestMethod(bool flag) { Console.WriteLine(flag); } } 因此: var obj = new MyClass(); obj.TestMethod(); // compiler error var obj2 = new MyClass() as MyInterface; obj2.TestMethod(); // prints false 有谁知道为什么可选参数devise为这样工作? 一方面,我认为能够重写在接口上指定的任何默认值是有用的,不过说实话,我不确定是否应该甚至能够在接口上指定默认值,因为这应该是实现的决定。 另一方面,这种断开意味着你不能总是交替地使用具体的类和接口。 这当然,如果在实现中指定了默认值,那么这个问题就不会成为问题,但是如果你将具体类作为接口公开(使用一些IOC框架来注入具体类),那么真的没有作为调用者必须始终提供默认值的点。

虚拟函数和vtable如何实现?

我们都知道C ++中的虚函数是什么,但是它们是如何实现的呢? vtable可以修改,甚至可以直接在运行时访问吗? 这个vtable是否存在于所有的类,或者只有那些至less有一个虚函数的类? 抽象类是否至less有一个条目的函数指针是NULL? 单个虚拟function是否会减慢整个class级的速度? 或者只有对虚拟函数的调用? 如果虚拟函数被实际覆盖,速度会受到影响,或者只要虚拟函数没有效果,速度会受到影响。

你必须把Task.Run放在一个方法来使其asynchronous?

我试图了解asynchronous以最简单的forms等待。 我想创build一个非常简单的方法,为了这个例子增加了两个数字,根本没有处理时间,这只是一个例子。 例1: private async Task DoWork1Async() { int result = 1 + 2; } 例2: private async Task DoWork2Async() { Task.Run( () => { int result = 1 + 2; }); } 如果我等待DoWork1Async()将代码同步或asynchronous运行? 我是否需要用Task.Run包装同步代码,使该方法等待和asynchronous,以便不阻止UI线程? 我试图找出如果我的方法是一个Task或返回Task<T>我是否需要用Task.Run包装代码使其asynchronous。 愚蠢的问题,我敢肯定,但我看到网上的例子,人们正在等待的代码,没有任何asynchronous内,并没有包裹在Task.Run或StartNew 。

Java在C#中的最终效果是什么?

Java在C#中的final是什么?

“开关”比“如果”更快?

switch语句实际上比if语句快吗? 我使用/Ox标志在Visual Studio 2010的x64 C ++编译器上运行以下代码: #include <stdlib.h> #include <stdio.h> #include <time.h> #define MAX_COUNT (1 << 29) size_t counter = 0; size_t testSwitch() { clock_t start = clock(); size_t i; for (i = 0; i < MAX_COUNT; i++) { switch (counter % 4 + 1) { case 1: counter += 4; break; case 2: counter […]

使用ANTLR 3.3?

我正在尝试开始使用ANTLR和C#,但是由于缺less文档/教程,我发现它非常困难。 我已经find了一些老版本的一些半心半意的教程,但似乎API已经有一些重大的改变。 任何人都可以给我一个简单的例子,如何创build一个语法,并在短程序中使用它? 我终于成功地将我的语法文件编译成一个词法分析器和parsing器,并且我可以在Visual Studio中获得这些编译和运行的语言(因为C#二进制文件似乎已经过时了,所以必须重新编译ANTLR源代码)更不用说源代码没有一些修正的情况下不能编译),但我仍然不知道如何处理我的分析器/词法分析器类。 据说,它可以产生一个AST给予一些input…然后我应该能够做一些事情与此。

图像到ASCII艺术转换

序幕 这个问题不时在这里popup来,但通常是因为写得不好而被删除。 我看到很多这样的问题,然后在请求附加信息时,从OP (通常的低代表)沉默。 有时候,如果input对我来说足够好,我决定回答一个答案,通常在活动时每天得到一些赞成票,但几个星期后问题就会被删除/删除,一切从头开始。 所以我决定写这个问答,所以我可以直接参考这些问题,而不必一遍又一遍地重写答案。 另一个原因是这个META线程针对我,所以如果你有额外的input随时发表评论。 题 如何使用C ++将位图图像转换为ASCII艺术 ? 一些限制: 灰度图像 使用单间隔字体 保持简单(不要为初学者级程序员使用太高级的东西) 这是一个相关的Wiki页面ASCII艺术 (感谢@RogerRowland)