Tag: C#的

为什么JIT订单会影响性能?

为什么.NET 4.0中C#方法的即时编译顺序会影响它们执行的速度? 例如,考虑两个等价的方法: public static void SingleLineTest() { Stopwatch stopwatch = new Stopwatch(); stopwatch.Start(); int count = 0; for (uint i = 0; i < 1000000000; ++i) { count += i % 16 == 0 ? 1 : 0; } stopwatch.Stop(); Console.WriteLine("Single-line test –> Count: {0}, Time: {1}", count, stopwatch.ElapsedMilliseconds); } public static void MultiLineTest() […]

有没有办法来标记代码,告诉ReSharper不要格式化?

我经常使用ReSharper“ 清理代码 ”命令将代码格式化为我们的编码风格,然后再将其检查到源代码pipe理中。 一般情况下,这样做的效果很好,但是有些代码可以手工更好地格式化(例如,由于ReSharper中的缩进规则,像链式linq方法或多行三元运算符有一个奇怪的缩进,将它们推向右侧)。 有没有什么办法来标记文件的一部分,告诉ReSharper不要格式化该区域? 我希望有一些类似于ReSharper抑制其他警告/function的标记。 如果没有,是否有一些方法来改变设置的组合来让ReSharper正确地格式化缩进? 编辑: 我从ReSharper论坛发现了这个post,说在代码清理中忽略生成的代码段(在ReSharper选项页中定义)。 虽然尝试过,但似乎没有被忽略。

读取C#中的自定义configuration文件(Framework 4.0)

我正在C#框架下开发一个应用程序4.0。 在我的应用程序中,我想创build不是app.config文件的单独的configuration文件。 configuration文件包含我们为产品开发的自定义configuration部分。 我不想从app.config使用configSource引用这个文件。 我想在运行时加载它并阅读它的内容。 我的意思就是log4net的一个例子,它允许你在log4net.config文件中写configuration。 任何人都可以帮助如何做到这一点,而无需编写代码来模拟框架中存在的代码? 更新: 基于Kaido的回答,我写了一个工具类,它读取自定义的configuration文件,并且能够在文件系统上的文件改变时刷新configuration内容。 这个类的用法如下: 获取configuration文件内容 // Create configuration reader that reads the files once var configFileReader = new CustomConfigurationFileReader("c:\\myconfig.config"); var config = configFileReader.Config; // Do any action you want with the config object like: config.GetSection("my.custom.section"); // or, var someVal = config.AppSettings.Settings["someKey"]; configuration文件更改时收到通知 // Create configuration reader that notifies when […]

为什么Linq在使用ToList时失败?

考虑这个琐碎的例子: var foo = new byte[] {246, 127}; var bar = foo.Cast<sbyte>(); var baz = new List<sbyte>(); foreach (var sb in bar) { baz.Add(sb); } foreach (var sb in baz) { Console.WriteLine(sb); } 用Two's Complement的魔法,-10和127被打印到控制台上。 到现在为止还挺好。 敏锐的眼睛的人会看到我遍历一个枚举并将其添加到列表中。 这听起来像ToList : var foo = new byte[] {246, 127}; var bar = foo.Cast<sbyte>(); var baz = bar.ToList(); //Nothing […]

while(true)的独特重载分辨率

当遇到这种奇怪的情况时,我正在实现同步/asynchronous重载: 当我有一个没有参数或返回值的常规lambdaexpression式时,它会通过Action参数进入Run重载,这是可预测的。 但是,当lambda有一段while (true)在它使用Func参数进入重载。 public void Test() { Run(() => { var name = "bar"; }); Run(() => { while (true) ; }); } void Run(Action action) { Console.WriteLine("action"); } void Run(Func<Task> func) // Same behavior with Func<T> of any type. { Console.WriteLine("func"); } 输出: 行动 FUNC 那么,怎么可能呢? 是有原因的吗?

如何正确比较C#中的十进制值?

我来自C ++的背景,我知道你不能准确地比较花车的平等。 对于C#,我只是假设同样的政策适用于十进制值,或一般的任何浮点值。 基本上,我有两个十进制值,如果它们不相等,我需要执行一些操作。 例如: decimal value1, value2; // Assume value1 and value2 are set somewhere to valid values. if( value1 != value2 ) { // Do something } 如果这不能按预期的那样工作,我愿意接受一个解决scheme,与误差范围进行平等比较,比如.00001或类似的。 这个问题的build议解决scheme是什么?

在C / C ++中实现解释器所需的参考文献

我发现自己附属于一个项目,将口译员融入到现有的应用程序中。 要解释的语言是Lisp的一个衍生物,具有特定于应用程序的内置函数。 个别“程序”将在应用程序中以批处理方式运行。 我感到惊讶的是,多年来我写了几个编译器和几个数据语言翻译器/parsing器,但是我从来没有真正写过翻译器。 原型在C ++中被实现为一个语法树walker。 我可能会影响架构超出原型,但不是实现语言(C ++)。 所以,约束: 实现将在C ++中进行 parsing可能会用yacc / bison语法来处理(现在是这样) 完整的虚拟机/解释器生态系统,如NekoVM和LLVM的build议可能不适合这个项目。 自给自足是更好的,即使这听起来像NIH。 我真正想要的是阅读实施口译员基本原理的材料。 我做了一些浏览SO,另一个网站叫做Lambda Ultimate ,虽然他们更倾向于编程语言理论。 到目前为止,我收集的一些花絮: Lisp in Small Pieces ,作者:Christian Queinnec。 推荐它的人说:“从简单的解释器到更高级的技术,完成字节码和'Scheme to C'编译器。 NekoVM 。 正如我上面提到的,我怀疑我们会被允许整合一个VM框架来支持这个项目。 计算机程序的结构和解释 。 本来我build议这可能是矫枉过正,但通过一个健康的块,我同意@JBF。 非常丰富的信息,并扩大思维。 关于Lisp by Paul Graham。 我已经阅读了这篇文章,虽然这是对Lisp原理的丰富介绍,但还不足以启动构build一个解释器。 鹦鹉执行 。 这似乎是一个有趣的阅读。 不知道它会为我提供基础。 计划从零开始 。 Peter Michaux正在攻击Scheme的各种实现,从用C语言编写的快速简洁的Scheme解释器(用作后面项目中的引导程序)到已编译的Scheme代码。 到目前为止非常有趣。 语言实现模式:创build您自己的特定领域和一般编程语言 , 在创build解释语言书籍的评论主题中推荐。 这本书包含了两个章节,专门介绍build立口译员的做法,所以我将其添加到我的阅读队列中。 […]

C项目的文件夹结构

我们对C项目的文件夹结构有哪些select? 我想做testing驱动开发,所以我需要文件夹结构有一个testing目录。

使用.NET连接到AS400

我正在尝试使用SQL来构build一个.NET Web应用程序来查询AS400数据库。 这是我第一次遇到AS400。 我需要在我的机器(或AS400服务器)上安装什么才能连接? (IBM iSeries Access Windows版) 连接string的组成部分是什么? 哪里可以find使用SQL命令构build数据访问层的示例代码? 谢谢。

如何初始化一个属于类成员的shared_ptr?

我不确定初始化是类的成员的shared_ptr的好方法。 你能告诉我,在C::foo()select的方式是好还是有更好的解决scheme? class A { public: A(); }; class B { public: B(A* pa); }; class C { boost::shared_ptr<A> mA; boost::shared_ptr<B> mB; void foo(); }; void C::foo() { A* pa = new A; mA = boost::shared_ptr<A>(pa); B* pB = new B(pa); mB = boost::shared_ptr<B>(pb); }