使用 TryParse 设置对象属性值
我目前正在重构代码以将 Convert.To 替换为 TryParse。
我遇到了以下代码,它正在创建属性并将其分配给对象。
List<Person> list = new List<Person>();
foreach (DataRow row in dt.Rows)
{
var p = new Person{ RecordID = Convert.ToInt32(row["ContactID"]) };
list.Add(p);
}
我想出的替代方案是:
var p = new Person { RecordID = Int32.TryParse(row["ContactID"].ToString(), out RecordID) ? RecordID : RecordID };
对我所做的事情有什么想法、意见或替代方案吗?
I'm currently refactoring code to replace Convert.To's to TryParse.
I've come across the following bit of code which is creating and assigning a property to an object.
List<Person> list = new List<Person>();
foreach (DataRow row in dt.Rows)
{
var p = new Person{ RecordID = Convert.ToInt32(row["ContactID"]) };
list.Add(p);
}
What I've come up with as a replacement is:
var p = new Person { RecordID = Int32.TryParse(row["ContactID"].ToString(), out RecordID) ? RecordID : RecordID };
Any thoughts, opinions, alternatives to what I've done?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(4)
编写一个扩展方法。
Write an extension method.
我会使用另一种实现
TryParse
,它返回一个int?
:然后你可以写:(
或者使用不同的默认值,如果你愿意的话 - 不管怎样,它都会在您的代码中可见。)
I'd use an alternative implementation
TryParse
which returns anint?
:Then you can write:
(Or use a different default value, if you want - either way it'll be visible in your code.)
我建议将 TryParse 部分与初始值设定项分开。 它将更具可读性。
I suggest separate the TryParse part from initializer. It will be more readable.