C#优化类属性,它是List <string>

时间:2017-02-27 22:23:38

标签: c# list

我有一个类属性: -

public List<string> szTypeOfFileList{get;set;}

顾名思义,该属性存储用户对感兴趣文件类型(.txt,.doc,.rtf,.pdf等)的选择。

我正在尝试评估是否有方法可以优化此List,因为它正在由用户条目填充,或者,如果我应该等待所有条目,然后调用单独的方法来优化属性。

我的意思是,让我们说特定的用户输入是&#34; .doc / .docx&#34;。目前,这将作为单个字符串项存储在List中。但是我希望它分别存储为两个项目。这将使代码保持在一个位置,并且不会影响未来的模块等。

private List<string> _szTypeOfFileList = new List<string>();
public List<string> szTypeOfFileList
{
    get
    {
        return _szTypeOfFileList;
    }
    set
    {
       // Some kind of validation/refining method here ?? //
    }
}

修改: -

因为我的FileTypeList来自checkboxList,所以我不得不使用与我接受的答案不同的方法(这使我指向正确的方向)。

 foreach (object itemchecked in FileTypeList.CheckedItems)
         {
            string[] values = itemchecked.ToString().Split('/');
            foreach(var item in values)
               TransactionBO.Instance.szTypeOfFileList.Add(item);
         }

我的代码的这部分在传递给Business类之前在UI类中。

3 个答案:

答案 0 :(得分:1)

如果您知道它将始终用“/”字符拆分,只需在字符串上使用拆分即可。包括一些简单的验证以防止明显的重复,您可以采取以下措施:

string[] values = x.Split('/');
foreach (string val in values) {
    if (!_szTypeOfFileList.Contains(val.ToLower().Trim())) {
        _szTypeOfFileList.Add(val.ToLower().Trim());
    }
}

如果您需要考虑该点中的多个字符,您还可以使用一个字符数组代替'/'进行拆分。

答案 1 :(得分:1)

我会考虑将List更改为更通用的内容。他们真的需要一个List ......还是一个集合?阵列?可数? (阅读this link

第二,在您的Set方法中,您想要接受他们的输入,将其分解并添加。问题出现了:列表是最好的方法吗? 重复数据怎么样?你刚刚再添加一次吗?你需要搜索它才能弄清楚你是否要添加它?

考虑字典或散列表,或任何可以帮助您处理数据的集合类型。我会读一读:this question(哦,我的......错误的链接......虽然没有人抱怨......提供链接...... :)

答案 2 :(得分:0)

var extensions = userInput.Split('/').ToList();