gpt4 book ai didi

c# - 在实现泛型接口(interface) C# 的泛型类中修改值类型

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

嘿,

我一直在寻找但找不到任何合适的答案...也许可以指出我。

所以我有一个接口(interface)和一个 Point 类:

interface IDoable<T>{
void DoSomething<T>(T ) ;
}
class Point<T>:IDoable <T>{
public T x;
public T y;
public Point(T x, T y){

this.x = x;
this.y = y;
}
public void DoSomething<T>(Point<T> p){
p.x += 10;
p.y += 10;
}
}

但它告诉我我不能这样做,因为 int 不能转换为 T。

我需要接口(interface)能够获取任何类型的 Point,无论是 int、float 还是 double 或者其他类型,并修改值。有什么想法吗?

最佳答案

您正在尝试将 10(整数)加到 T 类型的值中。 T 可以是整数、日期时间、列表或其他一些自定义类。这意味着绝对不能保证您的 T 能够将其自身添加到整数中。

不幸的是,在 C# 中无法添加 generic type constraint。这会将参数限制为支持特定操作的类型。

有解决方法,但它们很丑陋。即你可以:

class Point<T>{ ... }

然后有

class IntPoint : Point<int>, IDoable<int> { ... }
class DoublePoint : Point<double>, IDoable<Double> { ... }

关于c# - 在实现泛型接口(interface) C# 的泛型类中修改值类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18610239/

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