如果我有一个包含公共 int 属性(公共访问器)的对象,在实例化时初始化此属性时如何将字符串解析为 int ?// Given initialized DataTable table;// Given public int IntProperty {get; set;} in public class MyObject table.Rows.Select(row => new MyObject { int.TryParse(row["stringValue"], IntProperty), // MyObject.IntProperty is unknown here IntProperty = int.TryParse(row["stringValue"], ... ) // IntProperty is known but what about the out int result argument of Int32.TryParse ?});编辑:我可以做到这一点,但想知道是否有办法直接在对象初始值设定项中做到这一点:table.Rows.Select(row => { int.TryParse(row["stringValue"], out int intProperty); return new MyObject { IntProperty = intProperty; }});
3 回答
一只甜甜圈
TA贡献1836条经验 获得超5个赞
我非常同意 Jeroen Mostert。与其“将所有内容都压缩到对象初始值设定项中”,不如让您的代码可读且易于理解。比它可能编译没有问题:
var result = new List<MyObject>();
foreach(var row in table.Rows)
{
var instance = new MyObject();
int value;
if(int.TryParse(row["stringValue"], out value)
instance.IntProperty = value;
result.Add(instance);
}
在 C#7 中,您还可以将其简化为以下内容:
var instance = new MyObject();
if(int.TryParse(row["stringValue"], out int value)
instance.IntProperty = value;
result.Add(instance);
- 3 回答
- 0 关注
- 184 浏览
添加回答
举报
0/150
提交
取消