在C#:初始化OBJ有/無默認值
public class SomeClass
{
int x;
int y;
SomeClass (int x, int y)
{
this.x = x;
this.y = y;
}
}
有沒有簡單的方法,使新的SomeClass的沒有設置X和Y而是 對他們的默認值,如果我設定值,否則將它們設置有 默認值?
在C#:初始化OBJ有/無默認值
public class SomeClass
{
int x;
int y;
SomeClass (int x, int y)
{
this.x = x;
this.y = y;
}
}
有沒有簡單的方法,使新的SomeClass的沒有設置X和Y而是 對他們的默認值,如果我設定值,否則將它們設置有 默認值?
當然,用C#6你可以用auto-implemented properties:
public class SomeClass
{
public int X { get; } = 123;
public int Y { get; } = 456;
public SomeClass(){ }
public SomeClass(int x, int y)
{
this.X = x;
this.Y = y;
}
}
當然,你需要一個參數的構造函數。
如果您指的是類型的默認值,則會自動完成(數字類型爲0)。
您需要定義一個參數的構造函數:當你創建了一個對象
public class SomeClass
{
int x;
int y;
public SomeClass {}
public SomeClass (int x, int y)
{
this.x = x;
this.y = y;
}
}
:
var someClass = new SomeClass();
兩個x
和y
將使用它們的默認值,這是0
如果你不想這樣做,你可以通過傳遞給你已經聲明瞭構造函數的構造函數來處理t值爲x
和y
,正如David已經指出的那樣。
默認的構造函數會自動執行該操作。 您可以在構造函數中使用可選參數。
Read more on named and optional parameters.
public class SomeClass
{
// You can also write this as
// public SomeClass(int x=default(int), int y=default(int)) if you do
// not want to hardcode default parameter value.
public SomeClass(int x=0, int y=0)
{
this.X = x;
this.Y = y;
}
}
你可以把它作爲
void Main()
{
SomeClass a = new SomeClass();
SomeClass b = new SomeClass(1);
SomeClass c = new SomeClass(2,4);
}
當然...
new SomeClass(default(int), default(int))
或者更簡單地說:
new SomeClass(0, 0)
int
的默認值始終爲0
。所以,即使你有一個參數的構造函數定義它:
public SomeClass() { }
那些int
類成員仍默認爲0
。
使用無參數的構造函數。
由於必須使用new
關鍵字以某種方式創建實例,因此可以在類中使用無參數構造函數。
public SomeClass()
{
x = 0;
y = 0;
}
建立一個無參數的構造函數? –
我有時需要設置值,有時不需要...... –
您可以在一個類中創建多個構造函數。 –