0

我在“FileData.cs”文件中的构造函数代码:

public FileData(BatchData batch)
{
    this._batch = batch;
}

我想从“FileData.cs”文件中访问属性。所以,我使用了以下代码:

FileData fd = new FileData();

它将错误消息显示为“构造函数不接受 0 个参数”。我不知道如何从类中访问属性。给我一个解决方案。谢谢。

4

5 回答 5

0

您没有默认构造函数。您必须包含一个,因为默认情况下编译器不会生成一个。

基本上,由于您使用参数定义了一个显式构造函数,编译器不会生成默认构造函数,因此您的错误。

或者:

FileData fd = new FileData(new BatchData());
于 2012-09-28T14:48:47.123 回答
0

您需要显式添加无参数构造函数

public FileData()
{
}

public FileData(BatchData batch)
{
    this._batch = batch;
}

考虑到如果_batch类实例需要字段才能执行必要的操作,则需要在无参数构造函数上对其进行初始化

public FileData()
{
    this._batch = new BatchType;
}

或使用公共财产公开它。

public BatchType Batch 
{
     get { return _batch; }
     set {_batch = value }
}

您可以使用自动属性来简化您的代码

public BatchType Batch { get; set }

public FileData(BatchData batch)
{
   this.Batch = batch;
}
于 2012-09-28T14:49:41.260 回答
0

错误消息相当明确。FileData不传入任何数据就无法构造对象。您需要在它的构造函数中为其提供一个BatchData实例,以便创建一个新的FileData. 假设这种行为是有意的,那么您将需要创建 的新实例BatchData,或访问现有实例,并使用它来构造对象。

如果问题是你应该能够在FileData不需要实例的情况下构造一个实例,BatchData那么你需要添加一个FileData不带参数的新构造函数。如果您这样做,您帖子中的代码将再次起作用。

于 2012-09-28T14:54:39.730 回答
0

1)您应该将参数 BatchData 传递给您的类。

BatchData bd = new BatchData();
FileData fd = new FileData(bd);

2) 要访问财产,您可以...

a)...只是公开:

class FileData
{
public BatchData _batch;

public FileData(BatchData batch)
{
    this._batch = batch;
}
}

并访问您的财产,例如

fd._batch;

b) 或者你可以编写 getter 和 setter

class FileData
{
private BatchData _batch {get; set;}

public FileData(BatchData batch)
{
    this._batch = batch;
}
}

并访问

BatchData bd = fd.getbd();
fd.setbd(bd);
于 2012-09-28T14:55:20.903 回答
0

您应该为 FileData 类定义默认构造函数:

public FileData()
    {

    }

对于访问属性:当您定义公共属性时,您可以从 anthor 类访问此属性。

于 2012-09-28T14:55:30.937 回答