猿问

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

如果我有一个包含公共 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;

    }

});


动漫人物
浏览 185回答 3
3回答

一只甜甜圈

我非常同意 Jeroen Mostert。与其“将所有内容都压缩到对象初始值设定项中”,不如让您的代码可读且易于理解。比它可能编译没有问题:var result = new List<MyObject>();foreach(var row in table.Rows){&nbsp; &nbsp; var instance = new MyObject();&nbsp; &nbsp; int value;&nbsp; &nbsp; if(int.TryParse(row["stringValue"], out value)&nbsp; &nbsp; &nbsp; &nbsp; instance.IntProperty = value;&nbsp; &nbsp; result.Add(instance);}在 C#7 中,您还可以将其简化为以下内容:var instance = new MyObject();if(int.TryParse(row["stringValue"], out int value)&nbsp; &nbsp; instance.IntProperty = value;result.Add(instance);
随时随地看视频慕课网APP
我要回答