gpt4 book ai didi

c# - 将泛型结构转换为具有不同类型参数的相同泛型结构

转载 作者:太空宇宙 更新时间:2023-11-03 18:33:24 25 4
gpt4 key购买 nike

假设我有一个像这样的基本类层次结构:

public abstract class BaseClass { }
public class X : BaseClass { }
public class Y: BaseClass { }

我有这样一个通用结构:

public struct MyStruct<T>
where T: BaseClass, new()
{
}

然后我可以创建一个实例如下:

var x = new MyStruct<X>();

现在我想在 MyStruct 上提供一个操作(构造函数或转换运算符) ,这让我可以转换 MyStruct<X>MyStruct<Y> :

MyStruct<Y> my = new MyStruct<X>();

当我按如下方式编写构造函数时:

public struct MyStruct<T>
where T: BaseClass, new()
{
public MyStruct(MyStruct<T2> value)
where T2: BaseClass, new()
{
...
}
}

编译器不明白我在做什么(它似乎无法区分 MyStruct<T>MyStruct<T2>)。

我如何转换 MyStruct<X>MyStruct<Y>来自内部 MyStruct<T> ?

最佳答案

你不能在构造函数中这样做,但你应该能够在结构中编写一个转换方法,比如:

public struct MyStruct<T>
where T: BaseClass, new()
{
// Convert this instance of MyStruct<T> to a new MyStruct<TOut>
public MyStruct<TOut> ToMyStruct<TOut>()
{
...
}
}

这将允许你写:

struct2 = struct1.ToMyStruct<TOut>()

关于c# - 将泛型结构转换为具有不同类型参数的相同泛型结构,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19072551/

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