[英]C# initializing a constructor using : this
為什么this
不接受類類型的參數? 我能讀到什么? 這是我沒用的代碼
using System;
public class Class1
{
public int a = 5;
}
public class Class2
{
private readonly int num;
Class1 obj2 = new Class1();
public Class2(Class1 obj)
{
num = obj.a;
}
public Class2(string l) : this (Class1 obj2)
{
}
}
您的構造函數采用Class1
的實例,因此您應該使用:
public Class2(string l) : this (new Class1())
{
}
您可能還希望將構造函數參數分配給obj2
成員,而不是創建一個新的參數:
public class Class2
{
private readonly int num;
Class1 obj2;
public Class2(Class1 obj)
{
this.obj2 = obj;
num = obj.a;
}
public Class2(string l) : this (new Class1()) { }
}
首先讓我們看一下:
public Class2(string l) : this (Class1 obj2) {...}
首先,您不會在調用中包含類型,因此它將是:
public Class2(string l) : this (obj2) {...}
但是: obj2
是不是在這一點上有效 :構造函數(這有點包括字段初始化) 尚未運行 ,等等領域this
(如this.obj
)是不合法的,在該位置。 如Lee所述:只需傳入一個null
或new
實例。
一個類可以從另一個類繼承。 this
關鍵字引用類的實例,並且實例在“開發時”不存在
您不能使用該string
並將其傳遞給另一個使用Class1
作為參數的構造函數。 您需要創建一個Class1
對象。 但是因為這需要一個int
我不會使用帶string
而是int
的構造函數。 否則,您將需要使用int.Parse
,這可能會引發異常,並且異常的構造函數不是很好的做法(在可以避免的情況下)。
public Class2(int i)
: this(new Class1() { a=i })
{
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.