您可以使用运算符重载来模拟分配行为。这样,目标类还定义了部分的大小,因此每个类都必须知道输入的外观。它比 VB 示例的代码多一点。
示例(语法可能不正确,我很少使用运算符重载):
class DataItem
{
public String Name {get;set;}
public String Address {get;set;}
public String Comment {get;set;}
public static implicit operator DataItem(string value)
{
DataItem item = new DataItem();
item.Name = string.Substring(0, 10).Trim();
item.Address = string.Substring(10, 25).Trim();
item.Comment = string.Substring(25, 45).Trim();
return item;
}
}
[...]
DataItem item = sampleString;
[...]
一个更易读的替代方案是隐式创建者模式:
class DataItem
{
public String Name {get;set;}
public String Address {get;set;}
public String Comment {get;set;}
public static DataItem FromString(String string)
{
DataItem item = new DataItem();
item.Name = string.Substring(0, 10).Trim();
item.Address = string.Substring(10, 25).Trim();
item.Comment = string.Substring(25, 45).Trim();
return item;
}
}
[...]
DataItem item = DataItem.FromString(sampleString);
[...]