问题是C#上的接口实现很奇怪。它需要这样的代码 public ValueType GetPoint() 无论如何 public PointD GetPoint()
示例代码CLI:
public value struct PointD
//public ref class PointD
{
public:
PointD(double x, double y);
// Some stuff
};
public interface class InterfaceCLI
{
public:
double Foo();
PointD^ GetPoint();
};
示例代码C#:
public class Class1 : InterfaceCLI
{
public double Foo()
{
PointD x=new PointD( 1.0 , 2.7 );
return x.Y;
}
public ValueType GetPoint()
{
throw new NotImplementedException();
}
/*
public PointD GetPoint()
{
throw new NotImplementedException();
}
*/
}
为什么在类Class1中需要ValueType而不是PointD?!
答案 0 :(得分:0)
PointD^ GetPoint();
值类型不是引用类型。所以你应该不在这里使用^ hat。不幸的是,这种语法在C ++ / CLI中是允许的,它变成了一个盒装值。非常浪费。除了用你发现的ValueType模拟它之外,在C#中没有直接的等价物。
移除帽子以解决您的问题。