C# 初始化列表属性

C# 初始化列表属性,c#,list,properties,C#,List,Properties,我正在为SSIS进程编写一个程序,它所做的部分工作是从数据流中读取行,并将它们打包到字符串数组列表List。我的主类包含更新的列表,但我有一个EmailBuilder类,它需要访问更新的列表字段来编写HTML电子邮件。现在,我的代码如下所示: 田地 public static List<string[]> Updated = new List<string[]>(); 当然,这里的问题是我的字段是公共的,这是不允许的。我尝试使用内置属性: public static L

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

田地

public static List<string[]> Updated = new List<string[]>();
当然,这里的问题是我的字段是公共的,这是不允许的。我尝试使用内置属性:

public static List<string[]> Updated { get; private set; }
公共静态列表已更新{get;private set;}

但这将返回一个空异常,我假设,因为在这一点上,我实际上还没有创建列表。那么,我如何安全地实现这段代码呢?我似乎不能操纵它,这样我就可以从类外访问该字段,而不使其成为公共字段。非常感谢您的任何输入。

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

public static List<string[]> Updated { get; private set; } = new List<string[]>();
public static List<TheOtherType> Missing { get; private set; } = new List<TheOtherType>();
公共静态列表更新{get;private set;}=new List();
公共静态列表缺少{get;private set;}=new List();

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

public static List<string[]> Updated { get; private set; } = new List<string[]>();
public static List<TheOtherType> Missing { get; private set; } = new List<TheOtherType>();
公共静态列表更新{get;private set;}=new List();
公共静态列表缺少{get;private set;}=new List();

如果我理解正确,您希望保持字段私有,但从类外对其进行更改。可以使用一个公共方法来实现这一点吗?还是财产


如果我理解正确,您希望保持字段私有,但从类外对其进行更改。可以使用一个公共方法来实现这一点吗?还是财产


public static List updated securities{get;}=new List(),或者继续使用
{get;private set;}
并在构造函数中初始化它。当你说“内置属性”时,你的意思是什么?我的意思是使用由{get;}生成的自动生成代码,而不是写出{get{return updated}set{updated=value}。我不喜欢给UpdatedSecurities命名,为了简单起见,我想称它为Updated。你能解释一下你在构造函数中说初始化是什么意思吗?我不熟悉。不管怎样,试试我的建议。顺便说一句,我不会因为把一个领域公之于众而陷入绝对的生存危机。读/写公共属性与公共字段相比,这是一个很大的区别(除非你在WPF中使用数据绑定,但我认为你不是)。构造函数:我应该说“静态构造函数”<代码>已更新
是类的成员。你没说它叫什么,所以我就叫它Brian:
公共类Brian{static Brian(){Updated=new List();}公共静态列表Updated{get;private set;}/*很多其他东西*/}
。该
static Brian()
方法是一个静态构造函数,在任何东西第一次接触类时调用。它用于初始化静态成员,例如
Updated
。可能重复
公共静态列表UpdatedSecurities{get;}=new List(),或者继续使用
{get;private set;}
并在构造函数中初始化它。当你说“内置属性”时,你的意思是什么?我的意思是使用由{get;}生成的自动生成代码,而不是写出{get{return updated}set{updated=value}。我不喜欢给UpdatedSecurities命名,为了简单起见,我想称它为Updated。你能解释一下你在构造函数中说初始化是什么意思吗?我不熟悉。不管怎样,试试我的建议。顺便说一句,我不会因为把一个领域公之于众而陷入绝对的生存危机。读/写公共属性与公共字段相比,这是一个很大的区别(除非你在WPF中使用数据绑定,但我认为你不是)。构造函数:我应该说“静态构造函数”<代码>已更新
是类的成员。你没说它叫什么,所以我就叫它Brian:
公共类Brian{static Brian(){Updated=new List();}公共静态列表Updated{get;private set;}/*很多其他东西*/}
。该
static Brian()
方法是一个静态构造函数,在任何东西第一次接触类时调用。它用于初始化静态成员,如
Updated
。可能重复的答案通常不会问太多问题。答案通常不会问太多问题。
MainClass
{
  ...
  otherClass.AddToPrivateList("content")
}