【发布时间】:2016-01-28 07:20:11
【问题描述】:
我有一个模型的集合
public class MobileModelInfo
{
public string Name { get; set; }
public string Catagory { get; set; }
public string Year { get; set; }
}
在这里,我通过内联单执行语句
将MobileModelInfo 分配给ObservableCollection
方法#1
ObservableCollection<MobileModelInfo> mobList = new ObservableCollection<MobileModelInfo>((new List<MobileModelInfo>(){
new MobileModelInfo { Name = "S4", Catagory = "Smart Phone", Year = "2011" },
new MobileModelInfo { Name = "S5", Catagory = "Smart Phone", Year = "2013" },
new MobileModelInfo { Name = "S6", Catagory = "Ultra Smart Phone", Year = "2015" },
new MobileModelInfo { Name = "", Catagory = "Ultra Smart Phone", Year = "2016" }
}).Where(i => !string.IsNullOrEmpty(i.Name)).ToList());
现在考虑通用的实现方式
方法 #2
ObservableCollection<MobileModelInfo> mobList = new ObservableCollection<MobileModelInfo>();
MobileModelInfo mobObject = new MobileModelInfo();
mobObject.Name = "S4";
mobObject.Catagory = "Smart Phone";
mobObject.Year = "2011";
if(!string.IsNullOrEmpty(mobObject.Name))
mobList.Add(mobObject);
mobObject = new MobileModelInfo();
mobObject.Name = "S5";
mobObject.Catagory = "Smart Phone";
mobObject.Year = "2013";
if(!string.IsNullOrEmpty(mobObject.Name))
mobList.Add(mobObject);
mobObject = new MobileModelInfo();
mobObject.Name = "S6";
mobObject.Catagory = "Ultra Smart Phone";
mobObject.Year = "2015";
if(!string.IsNullOrEmpty(mobObject.Name))
mobList.Add(mobObject);
mobObject = new MobileModelInfo();
mobObject.Name = "";
mobObject.Catagory = "Ultra Smart Phone";
mobObject.Year = "2016";
if(!string.IsNullOrEmpty(mobObject.Name))
mobList.Add(mobObject);
在这两种方法中,哪一种性能好? 在我的主要项目中,我有一个非常复杂的模型类集合。所以,请帮助我选择一个最好的方法......
在第一种方法中,只有一个执行应该执行,因为它将被编译器扩展,但在第二种方法中,应该执行超过 25 (>25) 个执行。所以,我需要澄清在复杂数据结构中哪一种是最好的方法。
【问题讨论】:
-
这不是引用类型的工作方式。在第二种方法中,您将拥有一个包含 3 个对单个项目的引用的列表 (
Name="", Catagory="Ultra Smart Phone", Year="2016") -
请注意,如果您定期使用名称、类别和年份进行初始化,则值得创建一个构造函数。 (另外,你确定这些都应该是字符串吗?你什么时候想要一个不是
int的年份?名称实际上总是一个数字吗?也许类别应该是一个枚举?) -
@M.kazemAkhgary - 抱歉,我更新了第二种方法。现在帮助我哪一个更可取?
-
@MatthewWatson - 或多或少你是对的。在第一种方法中,只有一个执行应该执行,但在第二种方法中,应该执行超过 25 (>25) 个执行。所以,我需要澄清在复杂数据结构中哪一种是最好的方法。
标签: c# inline observablecollection