[英]C# PointF Subtract?
驚訝地發現System.Drawing.PointF
似乎具有用於減去大小的運算符,但沒有其他PointF。 因此,我嘗試編寫自己的PointF類,但是它需要能夠將System.Drawing.Points自動轉換為它,否則它實際上並沒有增加任何便利。 所以我寫了這些構造函數:
public PointF(float x = 0, float y = 0)
{
this.x = x;
this.y = y;
}
public PointF(System.Drawing.PointF p) : this(p.X, p.Y) { }
public PointF(System.Drawing.Point p) : this(p.X, p.Y) { }
但我仍然收到此錯誤:
無法從“ System.Drawing.Point”轉換為“ my_namespace.PointF”
(我有一個接受my_namespace.PointF
的函數,但我正在傳遞System.Drawing.Point
)。
第三構造函數不應該加入並對其進行自動轉換嗎?
您在my_namespace.PointF
類中定義了隱式轉換嗎? 否則它將不會自動轉換。
public PointF(float x = 0, float y = 0)
{
this.x = x;
this.y = y;
}
public PointF(System.Drawing.PointF p) : this(p.X, p.Y) { }
public PointF(System.Drawing.Point p) : this(p.X, p.Y) { }
//add this:
public static implicit operator PointF(System.Drawing.Point pt)
{ return new PointF(pt); }
您是否考慮過編寫“擴展方法”而不是推出自己的類的選擇?
您本身不能通過extn重載運算符。 方法(在框架的下一個修訂版中提出)..但是您應該能夠對+使用一個名為Add()的同義詞方法並獲得。
這為我編譯:
class PointF {
float x; float y;
public PointF(float x, float y)
{
this.x = x;
this.y = y;
}
public PointF(System.Drawing.PointF p) : this(p.X, p.Y) { }
public PointF(System.Drawing.Point p) : this(p.X, p.Y) { }
public static implicit operator PointF(System.Drawing.Point pt) { return new PointF(pt); }
public static implicit operator PointF(System.Drawing.PointF pt) { return new PointF(pt); }
}
//....
static void test(pointf.PointF p) {
}
//....
test(new System.Drawing.PointF(1, 1));
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.