您可以使用运算符重载来模拟赋值行为。这样目标类也定义了部件的大小,因此每个类必须知道输入的外观。这是比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);
[...]
谢谢。这段代码正是我所需要的。 – Nap 2010-06-11 00:50:53