为什么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)
{
}
}
答案 0 :(得分:3)
您的构造函数采用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()) { }
}
答案 1 :(得分:2)
首先让我们来看看:
public Class2(string l) : this (Class1 obj2) {...}
首先,您不在调用中包含类型,因此它将是:
public Class2(string l) : this (obj2) {...}
但是:obj2
在那时无效:构造函数(包括字段初始值设定项)尚未运行,因此{ {1}}(例如this
)在该位置不合法。正如李指出的那样:只需传入this.obj
或null
个实例。
答案 2 :(得分:0)
一个类可以从另一个类继承。 this
关键字引用类的实例,而实例在“develop-time”
答案 3 :(得分:0)
您不能使用string
并将其传递给另一个以Class1
为参数的构造函数。您需要创建一个Class1
对象。但是因为那需要int
我不会使用string
而是int
的构造函数。否则你需要使用int.Parse
可以抛出一个摘要,而异常的构造函数不是很好的做法(当它们可以避免时)。
public Class2(int i)
: this(new Class1() { a=i })
{
}