gpt4 book ai didi

c# - C# 中的协方差问题

转载 作者:行者123 更新时间:2023-11-30 19:49:01 25 4
gpt4 key购买 nike

我有这样声明的类:

internal private abstract class BoxGroup<TS> : IBoxGroup where TS : SavedState

在那个类中我有这个方法:

protected virtual TS saveState() {
return new SavedState(Width, Height);
}

我认为这是正确的,但我在 return 语句下看到红线,Resharper 说 new SavedState(Width, Height) 不能转换为 TS。我不知道为什么。我认为 TS 可以是扩展 SavedState 的任何类,也可以是 SavedState 本身。我该怎么做才能纠正它?

类保存状态非常简单,看起来像这样:

private class SavedState {
internal float Width { get; private set; }
internal float Height { get; private set; }
public SavedState(float width, float height) {
Width = width;
Height = height;
}
}

最佳答案

这与协方差无关;这是不可能的。

TS可以是扩展 SavedState 的任何类, 你不能神奇地转换基数 SavedState实例到任何TS是。

例如,如果我制作一个 BoxGroup<MySpecialSavedState> ,您的代码将尝试转换基数 SavedState反对 MySpecialSavedState , 这是不可能的。

关于c# - C# 中的协方差问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4600234/

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