如何从另一个类访问类中的属性

时间:2012-09-28 14:47:39

标签: c# asp.net .net c#-4.0 constructor

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

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

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

FileData fd = new FileData();

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

5 个答案:

答案 0 :(得分:0)

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

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

或者:

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

答案 1 :(得分: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;
}

答案 2 :(得分:0)

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

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

答案 3 :(得分: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);

答案 4 :(得分:0)

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

public FileData()
    {

    }

和访问属性:当您定义公共属性时,您可以从另一个类访问此属性。