gpt4 book ai didi

c# - c#中递归泛型类型的问题

转载 作者:可可西里 更新时间:2023-11-01 07:58:27 25 4
gpt4 key购买 nike

我有一些 C# 代码可以在单声道和 Microsoft 的 .net 编译器下编译得很好,但只能在单声道上运行。错误信息是(我添加的换行符)

Unhandled Exception: System.TypeLoadException:
Could not load type 'Hasse.Groups.Heavy.Product.PowerGroup`1'
from assembly 'Hasse, Version=1.0.x.y, Culture=neutral, PublicKeyToken=null'
because it has recursive generic definition.

该类型实际上有一个递归泛型定义,所以我的问题是:为什么它适用于单声道? [代码运行并产生预期结果]

完整的源代码在这里:https://github.com/miniBill/Hasse

仍然崩溃的简化代码在这里:

public class Group<T> : IWrappableGroup<WrapperGroup<T>> {}

public class WrapperElement<T> {}

public interface IWrappableGroup<U> {}

public class WrapperGroup<T> : Group<WrapperElement<T>> {}

class MainClass {
public static void Main(string[] args){
var ng = new Group<object>();
}
}

这是它在单声道上工作的证明:http://ideone.com/ZvA3I

最佳答案

这是一个 known问题。它可能被报告为编译器错误。

http://www.ecma-international.org/publications/files/ECMA-ST/ECMA-335.pdf (第 129 页)

至于在 Mono 中工作,就规范而言,Mono 工作在多个地方“损坏”。

(Recursive lambdas 是另一个在 Mono 中工作但不应该工作的例子)

关于c# - c#中递归泛型类型的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11295945/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com