小编Fra*_*nta的帖子

为什么C#编译器会在此代码上崩溃?

为什么下面的代码会崩溃.NET编译器?它在csc.exe 4.0版上进行了测试.

请参阅此处以获取不同版本的在线演示 - 它以相同的方式崩溃,同时表示不支持动态https://dotnetfiddle.net/FMn59S:

编译错误(第0行,第0列):内部编译器错误(地址xy处的0xc0000005):可能的罪魁祸首是"TRANSFORM".

虽然扩展方法很好List<dynamic>.

using System;
using System.Collections.Generic;

static class F  {
    public static void M<T>(this IEnumerable<T> enumeration, Action<T> action){}

    static void U(C.K d) {
        d.M(kvp => Console.WriteLine(kvp));
    }
}

class C  {
    public class K : Dictionary<string, dynamic>{}
}
Run Code Online (Sandbox Code Playgroud)

更新:这不会使编译器崩溃

static void U(Dictionary<string, dynamic> d)
{
    d.M(kvp => Console.WriteLine(kvp));
}
Run Code Online (Sandbox Code Playgroud)

更新2:在http://connect.microsoft.com/VisualStudio/feedback/details/892372/compiler-error-with-dynamic-dictinoaries中报告了相同的错误.针对FirstOrDefault报告了该错误,但似乎编译器在应用于从Dictionary <T1,T2>派生的类的任何扩展方法上崩溃,其中至少有一个参数类型是dynamic.请参阅Erik Funkenbusch对以下问题的更一般描述.

更新3:另一种非标准行为.当我尝试将扩展方法作为静态方法调用时,也就是说F.M(d, kvp => Console.WriteLine(kvp));,编译器不会崩溃,但它无法找到重载: Argument 1: cannot convert from 'C.K' to 'System.Collections.Generic.IEnumerable<System.Collections.Generic.KeyValuePair<string,dynamic>>'

更新4 …

c# csc

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

强制使用“var”被解析为关键字而不是类名

是否可以强制 C# 编译器在声明名称时将其var视为关键字而不是类标识符var

public class var
{
}

public class A
{
}

public class Program
{
    public static void Main()
    {
        var a=new A{};  // Cannot implicitly convert type 'A' to 'var'
    }
}
Run Code Online (Sandbox Code Playgroud)

https://dotnetfiddle.net/O1wVoO

c#

14
推荐指数
1
解决办法
350
查看次数

对象初始化期间的 NullReferenceException

为什么在下面的代码中尝试设置 X 的值时会出现 NullReferenceException?当我new在初始化时使用关键字时它工作正常B,但是为什么它可以在没有的情况下正常编译new然后在运行时失败?

https://dotnetfiddle.net/YNvPog

public class A
{
    public _B B;
    public class _B
    {
        public int X;
    }
}

public class Program
{
    public static void Main()
    {
        var a=new A{
                B={
                    X=1
                }
            };
    }
}
Run Code Online (Sandbox Code Playgroud)

c# nullreferenceexception

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

标签 统计

c# ×3

csc ×1

nullreferenceexception ×1