這個問題在這里已經有了答案: 結構建構式:“在將控制權回傳給呼叫者之前,必須完全分配欄位。” (5 個回答) 昨天關門。
我仍然不知道為什么這個結構的建構式會出錯。我去網上找了很多關于這方面的資料,但我還是不明白。
public struct Coord
{
private double _x;
private double _y;
public double X
{
get { return _x; }
set { _x = value; }
}
public double Y
{
get { return _y; }
set { _y = value; }
}
public Coord(double x, double y)
{
// error here
X = x;
Y = y;
}
}
uj5u.com熱心網友回復:
您需要初始化變數,而不是屬性。編譯器不知道您的屬性X,Y而只是簡單的設定器(其中可能有任何代碼)。將您的建構式更改為
public Coord(double x, double y)
{
_x = x;
_y = y;
}
另一種方法是將您的屬性更改為自動屬性(洗掉欄位)。然后你的代碼也可以作業。
uj5u.com熱心網友回復:
您可以將建構式更改為:
public Coord(double x, double y) : this()
{
X = x;
Y = y;
}
通過顯式呼叫默認建構式(添加的: this()部分),所有欄位都被正確初始化為其默認值(0.0 表示雙精度)。該默認建構式是為結構隱式生成的。
uj5u.com熱心網友回復:
您可能需要有一個不帶引數的默認建構式來定義帶引數的建構式
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/525987.html
標籤:C#。网
上一篇:POST請求回傳空回應
