我在“FileData.cs”文件中的构造函数代码:
public FileData(BatchData batch)
{
this._batch = batch;
}
我想从“FileData.cs”文件中访问属性。所以,我使用了以下代码:
FileData fd = new FileData();
它将错误消息显示为“构造函数不接受 0 个参数”。我不知道如何从类中访问属性。给我一个解决方案。谢谢。
我在“FileData.cs”文件中的构造函数代码:
public FileData(BatchData batch)
{
this._batch = batch;
}
我想从“FileData.cs”文件中访问属性。所以,我使用了以下代码:
FileData fd = new FileData();
它将错误消息显示为“构造函数不接受 0 个参数”。我不知道如何从类中访问属性。给我一个解决方案。谢谢。
您没有默认构造函数。您必须包含一个,因为默认情况下编译器不会生成一个。
基本上,由于您使用参数定义了一个显式构造函数,编译器不会生成默认构造函数,因此您的错误。
或者:
FileData fd = new FileData(new BatchData());
您需要显式添加无参数构造函数
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;
}
错误消息相当明确。FileData
不传入任何数据就无法构造对象。您需要在它的构造函数中为其提供一个BatchData
实例,以便创建一个新的FileData
. 假设这种行为是有意的,那么您将需要创建 的新实例BatchData
,或访问现有实例,并使用它来构造对象。
如果问题是你应该能够在FileData
不需要实例的情况下构造一个实例,BatchData
那么你需要添加一个FileData
不带参数的新构造函数。如果您这样做,您帖子中的代码将再次起作用。
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);
您应该为 FileData 类定义默认构造函数:
public FileData()
{
}
对于访问属性:当您定义公共属性时,您可以从 anthor 类访问此属性。