我已经用下面这段代码的一些问题。 我想明确的字符串到一个对象,这是工作完全正常,但是,如果这个对象是一个通用类的一部分,这是与以下错误异常失败:“无法投类型的对象‘System.String’键入“test.B””。 尽管我已经超载的方法。
using System;
using System.Collections.Generic;
namespace test {
class Program {
static void Main(string [] args) {
// These two cast perfectly fine.
B x = (B) "abc";
C y = (C) "def";
A <B> a = new A<B>();
a.b();
A <C> b = new A<C>();
b.b();
}
}
class A<T> {
public List <T> a = new List<T>();
public void b() {
// Unable to cast object of type 'System.String' to type 'test.B'
this.a.Add ((T) (object) "abc");
this.a.Add ((T) (object) "def");
this.a.Add ((T) (object) "ghi");
}
}
class B {
public string b;
public static explicit operator B(string a) {
B x = new B();
x.b = a;
return x;
}
}
class C {
public string c;
public static explicit operator C(string a) {
C x = new C();
x.c = a;
return x;
}
}
}
这将是真棒,如果有人为能来我这是为什么不投正确解释。
谢谢