初始化列表属性

时间:2019-05-10 19:31:45

标签: c# list properties

我正在编写一个用于SSIS进程的程序,它的一部分工作是从数据流中读取行并将它们打包到字符串数组List<string[]>中。我的主类包含已更新列表,但是我有一个EmailBuilder类,该类需要访问“已更新列表”字段以编写HTML电子邮件。现在,我的代码如下:

字段

public static List<string[]> Updated = new List<string[]>();

ProcessInputRow

public override void Input0_ProcessInputRow(Input0Buffer Row)
{
    if (Row.Missing_IsNull)
    {
        Updated.Add(new string[] { Row.Name, Row.PreviousOutstanding.ToString(), Row.PreviousDate.ToString(), Row.CurrentOutstanding.ToString(), Row.CurrentDate.ToString()});
    }
    else
    {
        Missing.Add(Row.Missing);
    }
}

当然,这里的问题是我的字段是 public ,这是禁止的。我尝试使用内置属性:

public static List<string[]> Updated { get; private set; }

但是我假设这返回Null异常,因为到那时我还没有真正创建列表。那么,如何安全地实现此代码?我似乎无法操纵它,以致可以在不将其设置为公共字段的情况下从类外部访问该字段。任何输入,我们将不胜感激。

2 个答案:

答案 0 :(得分:0)

如果我理解正确,那么您想保留该字段的私密性,但可以在课堂之外对其进行更改。可以使用执行此操作的公共方法吗?还是财产?

喜欢

MainClass
{
  ...
  otherClass.AddToPrivateList("content")
}

答案 1 :(得分:-1)

最好隐藏自己的字段,即使这不是必需的。如果您使用的是C#6或更高版本,则可以像这样初始化auto属性。

public static List<string[]> Updated { get; private set; } = new List<string[]>();
public static List<TheOtherType> Missing { get; private set; } = new List<TheOtherType>();