0
晚上好,我的问题是与以下几点:C#为模板的结构:无法隐式转换
public struct vector2D<T1>
{
public T1 m_w;
public T1 m_h;
// Irrelevant stuff removed (constructor, other overloader's)
public static bool operator !=(vector2D<T1> src, T1 dest)
{
return (((dynamic)src.m_w != (dynamic)dest) || ((dynamic)src.m_h != (dynamic)dest));
}
public static bool operator ==(vector2D<T1> src, T1 dest)
{
return (((dynamic)src.m_w != (dynamic)dest) || ((dynamic)src.m_h != (dynamic)dest));
}
public static bool operator !=(vector2D<T1> src, vector2D<T1> dest)
{
return (((dynamic)src.m_w != (dynamic)dest.m_w) || ((dynamic)src.m_h != (dynamic)dest.m_h));
}
public static bool operator ==(vector2D<T1> src, vector2D<T1> dest)
{
return Equals(src, dest);
}
}
现在,我得到了错误的是:
Error 1 Operator '!=' cannot be applied to operands of type 'vector2D<int>' and 'vector2D<uint>'
Error 2 Cannot implicitly convert type 'vector2D<uint>' to 'vector2D<int>'
现在我知道的编译器不知道如何“铸”与下面的代码片段:
vector2D<uint>[] Something = new vector2D<uint>[2]; // Pretend it has values...
Dictonary<uint, vector2D<int>> AnotherThing = new Dictonary<uint, vector2D<int>>(); // Pretend it has values...
if (AnotherThing[0] != Something[0]) { ... }
AnotherThing[0] = Something[0];
我试过几件事,只是他们要么给我更多错误,不工作或不工作。所以我的问题是我将如何去做“铸造”?
也可能不错,我通常使用C++编程,所以C#让我感到惊讶了好几次。如果上面的代码给你做恶梦,还提前抱歉。
谢谢你,就像一个魅力。我尝试了类似的东西,但没有奏效,我明白为什么它没有,反正再次感谢你。 – SharkBytes 2014-12-05 03:26:57