作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一个 MyClass<object>
类型的对象我需要将其转换为 MyClass<int>
据我所知,它包含整数。
如果我只是尝试进行强制转换是无法编译的:
MyClass<object> a = new MyClass<object>();
MyClass<int> b = (MyClass<int>) a;
出了什么问题,怎么办?
最佳答案
您可以使用隐式
转换运算符
class MyClass<T>
{
public static implicit operator MyClass<T>(MyClass<object> input)
{
return null;
}
}
然后转换有效
MyClass<object> a = new MyClass<object>();
MyClass<int> b = (MyClass<int>) a;
//you don't have to write cast type
MyClass<int> c = a;
虽然您仍然需要实现转换的确切细节。
编辑:如果您想显式调用 cast,只需将 implicit
关键字更改为 explicit
class MyClass<T>
{
public static explicit operator MyClass<T>(MyClass<object> input)
{
return null;
}
}
这意味着您仍然可以使用原始类型转换,但这将变得无效
//will not compile now !
MyClass<object> a = new MyClass<object>();
MyClass<int> b = a;
关于c# - 如何将 A<T> 类型的泛型对象转换为 A<T'>?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27962334/
我是一名优秀的程序员,十分优秀!