1

为什么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)
  {

  }
}
4

4 回答 4

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()) { }
}
于 2012-12-07T08:34:04.567 回答
2

首先让我们看一下:

public Class2(string l) : this (Class1 obj2) {...}

首先,您没有在调用中包含类型,因此它将是:

public Class2(string l) : this (obj2) {...}

但是:此时obj2 无效:构造函数(有点包括字段初始化程序)尚未运行,因此this(例如this.obj)上的字段在该位置是不合法的。正如李所说:只需传入一个nullnew实例。

于 2012-12-07T08:35:23.510 回答
0

一个类可以继承自另一个类。关键字指的this是一个类的实例,而实例在“开发时”不存在

于 2012-12-07T08:38:11.217 回答
0

您不能使用它string并将其传递给另一个Class1 作为参数的构造函数。您需要创建一个Class1对象。但是由于这需要一个inti 不会使用采用stringbut的构造函数int。否则,您将需要使用int.Parse可能引发异常的异常构造函数,并且异常构造函数不是好的做法(当它们可以避免时)。

public Class2(int i)
    : this(new Class1() { a=i })
{

}
于 2012-12-07T08:39:23.353 回答