【问题标题】:Rationale behind lack of ctor constraints in C# [duplicate]C# 中缺少 ctor 约束的基本原理 [重复]
【发布时间】:2013-11-24 15:27:42
【问题描述】:

我想知道,类型化构造函数缺少泛型类类型约束的原因是什么?例如。

public class MyClass<T>
    where T : new(int)
{
    public T Create(int i)
    {
        return new T(i);
    }
}

尽管这可能很容易(尽管 IMO 丑陋)绕过(通过 lambda-ctor),但我无法想象这种约束可能会导致任何实际麻烦或歧义的情况。

请注意,这是一个语言结构问题,而不是特定问题。

【问题讨论】:

  • @ken2k 关于为什么没有这样的限制没有实际答案。我不是在问是否有它们或如何克服它们的不足。我在问,为什么 C# 是这样设计的,没有。
  • 下次你上车时,看看你身后。 Jon Skeet 将在那里附上一张附有答案的便条...
  • 很多人需要看看this Eric Lippert's post
  • @Spook 在接受的答案下方的 cmets 中有解释。
  • @Spook “我在问,为什么 C# 是这样设计的,没有”-> 那么谁知道呢?答案将是纯粹的猜测。很可能该功能不够有用,无法实现。但这只是一个猜测。

标签: c#


【解决方案1】:

我搜索了一下,找到了答案。但由于它在 SO 上,我不想复制它,我只会发布一个链接。这是 Eric Lippert 的回答。我希望他的回答对你有意义。

https://stackoverflow.com/a/9741812/809009

那里的问题有点长,但您可以跳过它并只读链接的答案。

【讨论】:

  • 好的,这就是我寻找的答案:在 IL 中没有标准的方式来描述“调用采用 int 的构造函数”。我们必须要么向 IL 添加一个新概念,要么生成代码以便通用构造函数调用使用反射。 这对我来说很公平。谢谢!
猜你喜欢
  • 2018-12-12
  • 2011-03-19
  • 2013-05-05
  • 2021-06-13
  • 2019-12-30
  • 1970-01-01
  • 1970-01-01
  • 2017-04-17
  • 1970-01-01
相关资源
最近更新 更多