小编Cum*_*yah的帖子

C#'是'运营商在.NET 4上的发布模式优化下会受到影响吗?

下面是一个简单的测试夹具.它在Debug版本中成功,在Release版本中失败(VS2010,.NET4解决方案,x64):

[TestFixture]
public sealed class Test
{
    [Test]
    public void TestChecker()
    {
        var checker = new Checker();
        Assert.That(checker.IsDateTime(DateTime.Now), Is.True);
    }
}

public class Checker
{
    public bool IsDateTime(object o)
    {
        return o is DateTime;
    }
}
Run Code Online (Sandbox Code Playgroud)

似乎代码优化会造成一些破坏; 如果我在Release版本上禁用它,它也可以.这让我感到很困惑.下面,我使用ILDASM来反汇编构建的两个版本:

调试IL:

.method public hidebysig instance bool IsDateTime(object o) cil managed
{
  // Code size       15 (0xf)
  .maxstack  2
  .locals init (bool V_0)
  IL_0000:  nop
  IL_0001:  ldarg.1
  IL_0002:  isinst     [mscorlib]System.DateTime
  IL_0007:  ldnull
  IL_0008:  cgt.un
  IL_000a:  stloc.0
  IL_000b:  br.s       IL_000d
  IL_000d:  ldloc.0
  IL_000e:  ret …
Run Code Online (Sandbox Code Playgroud)

c# compiler-construction optimization il

40
推荐指数
3
解决办法
964
查看次数

将Java文件作为惰性Clojure序列处理

在Clojure中,在包含从Java序列化的浮点值的文件中获取延迟序列会是什么?(我已经玩弄了一种with-open基于行读取示例的方法,但似乎无法连接点以将流作为浮点数处理.)

谢谢.

io clojure

11
推荐指数
1
解决办法
325
查看次数

在.NET框架中遇到自递归程序集引用

我正在编写一些C#代码,递归地遍历基本程序集的引用程序集,构建这些引用的有向非循环图以进行拓扑排序.我是通过Assembly类上的GetReferencedAssemblies()方法完成的.

在测试代​​码时,我发现 - 令我惊讶的是 - .NET框架中的某些程序集显然将自己列为程序集引用.一个这样的例子是System.Transactions,Version = 2.0.0.0,Culture = neutral,PublicKeyToken = b77a5c561934e089,它列出了System.Transactions,Version = 2.0.0.0,Culture = neutral,PublicKeyToken = b77a5c561934e089作为参考,可以在Reflector中验证.

一旦我意识到这一点,通过比较AssemblyNames打破无限递归是微不足道的,但我很好奇这种情况,因为我自己无法生成自递归程序集.(我可以谷歌没有关于此的信息,并添加自己作为参考不会使得到的程序集自我递归.)

简而言之:自我递归汇编引用真的是"犹太教" - 一些系统程序集引用自身的理由是什么?

谢谢.

.net reflection assemblies circular-dependency circular-reference

5
推荐指数
1
解决办法
591
查看次数

如何将数据表加载为ReportDataSource?

我想做的事情如下:

this.reportViewer.LocalReport.DataSources.Clear();
DataTable dt = new DataTable();
dt = this.inputValuesTableAdapter.GetData();    
Microsoft.Reporting.WinForms.ReportDataSource rprtDTSource = new Microsoft.Reporting.WinForms.ReportDataSource();

rprtDTSource = dt; // this line generates exception   

//this.reportViewer.LocalReport.DataSources.Add(rprtDTSource);
this.reportViewer.RefreshReport();
Run Code Online (Sandbox Code Playgroud)

如何将数据表加载为ReportDataSource?

当前代码生成: "无法将类型'System.Data.DataTable'隐式转换为'Microsoft.Reporting.WinForms.ReportDataSource'"

c# reporting reportviewer

4
推荐指数
1
解决办法
5万
查看次数

在对Ruby数组进行分块时,将分块的开始索引作为结果的一部分

我遇到一种情况,我想将初始化nils为的数组分成空段和包含连续数字的段。

我发现的高阶chunk函数Array为此提供了一个优雅的解决方案:

<< [nil,nil,1,2,nil,3].chunk { |e| !e.nil? }.each { |e| p e }

>> [false, [nil, nil]]
>> [true, [1, 2]]
>> [false, [nil]]
>> [true, [3]]
Run Code Online (Sandbox Code Playgroud)

但是,假设我希望输出也将起始索引包括在每个块中的原始数组中,即将上面的输出增加到类似以下内容:

>> [false, 0, [nil, nil]]
>> [true, 2, [1, 2]]
>> [false, 4, [nil]]
>> [true, 5, [3]]
Run Code Online (Sandbox Code Playgroud)

是否有一种解决方案,可以保留上述片段的表现力?

提前致谢。

ruby arrays chunking

2
推荐指数
1
解决办法
438
查看次数