【问题标题】:Initializing a List Property初始化列表属性
【发布时间】:2019-05-10 19:31:44
【问题描述】:

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

字段

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

进程输入行

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; }

但这会返回一个空异常,我假设是因为那时我还没有真正创建列表。那么,我怎样才能安全地实现这段代码呢?我似乎无法操纵它,以便我可以从类外部访问该字段而不使其成为公共字段。非常感谢任何输入。

【问题讨论】:

  • public static List&lt;string[]&gt; UpdatedSecurities { get; } = new List&lt;string[]&gt;();,或者留在{ get; private set; },在构造函数中初始化。当您说“内置属性”时,您的意思是什么?
  • 我的意思是使用由 { get; 生成的自动生成的代码。 } 而不是写出 { get { return updated } set { updated = value } }。我不好命名UpdatedSecurity,为了简单起见,我打算称它为Updated。当你在构造函数中说初始化时,你能解释一下你的意思吗?我不熟悉。
  • 好的。不管怎样,试试我的建议。顺便说一句,我不会对公开一个领域有绝对的生存危机。一个读/写公共属性与一个公共字段,这很重要(除非你在 WPF 中使用数据绑定,但我认为你不是)。
  • 构造函数:我应该说“静态构造函数”。 Updated 是一个类的成员。你不说它的名字是什么,所以我就叫它布赖恩:public class Brian { static Brian() { Updated = new List&lt;string[]&gt;(); } public static List&lt;string[]&gt; Updated { get; private set; } /* much other stuff */ }static Brian() 方法是一个静态构造函数,在任何东西第一次触及你的类时调用。用于初始化Updated等静态成员。

标签: c# list properties


【解决方案1】:

如果我理解正确,您希望将该字段保密,但要从课堂外对其进行更改。可以使用这样做的公共方法吗?还是财产?

喜欢

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

【讨论】:

  • 答案通常不会问很多问题。
【解决方案2】:

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-08-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-11-21
    相关资源
    最近更新 更多