用空格初始化列表项

本文关键字:列表 初始化 空格 | 更新日期: 2023-09-27 18:00:45

假设我有一个由包含三个字符串的listitem组成的列表。我添加了一个新的listitem,并尝试从外部源分配所述字符串的值。

如果其中一个项目未分配,则列表项目中的值将保持为null(未分配)。因此,如果我试图将该值分配给页面上的字段,就会出现错误。

我可以为页面上的每个字段检查isNullOrEmpty,但这似乎效率很低。我宁愿在代码绑定中将值初始化为"(空字符串)并发送有效数据。

我可以手动完成:

            ClaimPwk emptyNode = new ClaimPwk();
            emptyNode.cdeAttachmentControl = "";
            emptyNode.cdeRptTransmission = "";
            emptyNode.cdeRptType = "";
            headerKeys.Add(emptyNode);

但我有一些大的清单项目,为这些项目写会很乏味。

那么,有没有一个命令,或者只是简单地说,一种更简单的方法可以将列表项初始化为空字符串,而不是null?

或者有人有更好的主意吗?

用空格初始化列表项

从外部源返回一个初始化的类实例(具有正确的值,如果需要,则为string.Empty),并将其直接添加到集合中。

   classCollection.Add(GetClassInstanceFromOutsideSource());

如果您无法从这个外部源返回实例,请编写一个包装方法来调用它,返回实例并将其直接添加到集合中。

我想不出你为什么要在集合中添加一个类的"空"实例,然后更新它。效率低下且不合逻辑。

当您在ClaimPwk类中定义属性时,您可以将属性设置为默认值(在您的情况下为""

例如

Public Class ClaimPwk{
    public string cdeAttachmentControl = "";
    public string cdeRptTransmission = "";
    public string cdeRptType = "";
}  

然后,当您创建ClaimPwk的实例时,您将拥有默认值为""的属性

可能有点牵强,但您可以使用反射将所有公共可写字符串属性设置为string.Empty,如以下

emptyNode.GetType()
         .GetProperties()
         .Where(p => p.CanWrite && p.PropertyType == typeof(string)).ToList()
         .ForEach(p => p.SetValue(emptyNode, string.Empty, null));

但最有效的选择是将属性初始化为字符串。类定义中为空。