Использование TryParse для задания значений свойств объекта
Я в настоящее время рефакторинга кода, чтобы заменить преобразования.Для того, чтобы метод 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 };
Какие-нибудь мысли, мнения, альтернативы тому, что я сделал?3 ответа:
Напишите метод расширения.
public static Int32? ParseInt32(this string str) { Int32 k; if(Int32.TryParse(str, out k)) return k; return null; }
Я бы использовал альтернативную реализацию
TryParse
, которая возвращаетint?
:public static int? TryParseInt32(string x) { int value; return int.TryParse(x, out value) ? value : (int?) null; }
Тогда вы можете написать:
var p = new Person { RecordID = Helpers.TryParseInt32(row["ContactID"].ToString()) ?? 0 };
(или используйте другое значение по умолчанию, если хотите - в любом случае оно будет видно в вашем коде.)