C# 3.0之Object Initializers
2010-07-04 by 嘉瑜, Category: 码农日记, Tags: C# No Comments 21次浏览
我一定是活在时间错位的时空中,比如对jQuery,比如现在的Object Initializer。话不多说,从现在开始学起,追新技术可以很累可是也可以很有趣。
2007年C# 3.0发布的几个新特性为:
Object Initializers Anonymous Types Automatic Properties Extension Methods Lambda Expressions LINQ Collection Initializers
感觉这些特征都与Javascript的Syntax倒是越来越接近,
1. Object Initializers
语句方式与熟悉的jQuery settings极为相象:
MyObj obj = new MyObj{Property1 = 1; Property2 = “Hello World!”;};
前天我写了一个简单的类,是为了处理以前02年的项目中那些可读性为负数的代码,
public class UserSearch
{
private const char _delimetor = '|';
public enum SearchMode
{
SimpleSearch,
AdvancedSearch
}
public bool IsAdvancedSearch { get; set; }
// Items (leave all properties 'string' type)
// ETODO: make it generic in Type
public string ProductFamily { get; set; }
public string ProductGroup { get; set; }
public string ProductSubGroup { get; set; }
public string ProductName { get; set; }
public string DocNumber { get; set; }
public string DocTitle { get; set; }
public string DocType { get; set; }
public string ReleaseDTOp { get; set; }
public string ReleaseDTStartString { get; set; }
public string ReleaseDTEndString { get; set; }
public string ContentSearch { get; set; }
public string SearchTypeIdString { get; set; }
public string SearchText { get; set; }
public UserSearch()
{
}
}
使用的时候为
UserSearch userSearch =
new UserSearch
{
ProductFamily = (DListFamilies.SelectedValue == "") ? "0" : DListFamilies.SelectedValue,
ProductGroup = (DListGroups.SelectedValue == "") ? "0" : DListGroups.SelectedValue,
ProductSubGroup = (DListSubGroups.SelectedValue == "") ? "0" : DListSubGroups.SelectedValue,
ProductName = TBoxProduct.Text.Trim(),
DocNumber = TBoxDocNumber.Text.Trim(),
DocTitle = TBoxDocTitle.Text.Trim(),
DocType = (DListDocTypes.SelectedValue == "") ? "0" : DListDocTypes.SelectedValue,
ReleaseDTOp = CtrlDateOp.GetSelectedDateOp(),
ReleaseDTStartString = CtrlDateOp.GetDateStart(),
ReleaseDTEndString = CtrlDateOp.GetDateEnd(),
ContentSearch = TBoxSearchContent.Text.Trim()
};
这在Javascript里称为disordered,即不需要再在构造函数里面重载,用这种方法即可,是不是很方便呢?
Tags: C#


