C# 为泛型类创建隐式转换?

标签 c# generics

我有一个泛型类,用于将数据写入isolatedStorage。

我可以使用静态隐式运算符 T() 将泛型类转换为泛型参数 T

例如

MyClass<double> foo = new MyClass(187.0);

double t = foo;

我的问题是,我该如何做相反的事情?

MyClass<double> foo = new MyClass(187.0);
double t = 0.2d;
foo = t;

隐式运算符必须是静态的,所以我不确定如何传入类的实例?

最佳答案

此类显示 T 和 MyClass 之间的双向转换。

class MyClass<T>
{
  public MyClass(T val)
  {
     Value = val;
  }

  public T Value { get; set; }

  public static implicit operator MyClass<T>(T someValue)
  {
     return new MyClass<T>(someValue);
  }

  public static implicit operator T(MyClass<T> myClassInstance)
  {
     return myClassInstance.Value;
  }
}

关于C# 为泛型类创建隐式转换?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6946412/

相关文章:

c# - Unity C# 中的泛型

vb.net - 具有约束的 VB 泛型——类型转换和继承?

java - 泛型类的静态成员是否因 Java 中的不同类型而不同?

java - "class A <T extends SomeClass<T>>"与 B 类 <T extends SomeInterface<T>> 的工作方式不同? (是的)

c# - 当这种情况发生时如何通知一个人?

c# - 从依赖于另一个注册元素的 ServiceStack 的 IoC 容器解析

c# - Crossfading - 获取音频 C# .NET Compact Framework 的最佳方式?

c# - HTTP 错误 404.13 - asp.net core 2.0

c# - 为什么要限制在泛型类型中的接口(interface)?

c# - 添加新绑定(bind)时 IIS 8.5 会回收