为了账号安全,请及时绑定邮箱和手机立即绑定

匿名实例化期间对象初始值设定项中的输出参数

匿名实例化期间对象初始值设定项中的输出参数

C#
动漫人物 2021-10-09 16:42:14
如果我有一个包含公共 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);


查看完整回答
反对 回复 2021-10-09
  • 3 回答
  • 0 关注
  • 184 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信