У меня есть класс, который возвращает тип объекта переменной. Переменная должна знать, что реальный тип, когда операции выполняются на нем:Каков самый быстрый способ преобразования объекта Тип
свойствоpublic object Data
{
get
{
switch (CriteriaID)
{
case (int)matrix2.enums.NodeTypeEnums.Enums.MultiLineText:
return (string)_Data;
case (int)matrix2.enums.NodeTypeEnums.Enums.SingleLineText:
return (string)_Data;
case (int)matrix2.enums.NodeTypeEnums.Enums.Number:
int temp = 0;
return int.TryParse((string)_Data, out temp) ? (int?)temp : null;
case (int)matrix2.enums.NodeTypeEnums.Enums.Price:
decimal temp1 = 0;
return decimal.TryParse((string)_Data, out temp1) ? (decimal?)temp1 : null;
case (int)matrix2.enums.NodeTypeEnums.Enums.PullDown:
return (string)_Data;
case (int)matrix2.enums.NodeTypeEnums.Enums.Checkbox:
bool temp2 = false;
return bool.TryParse((string)_Data, out temp2) ? (bool?)temp2 : null;
case (int)matrix2.enums.NodeTypeEnums.Enums.Date:
DateTime temp3 = DateTime.MinValue;
return DateTime.TryParse((string)_Data, out temp3) ? ((DateTime?)temp3).Value.ToString("MM/dd/yyyy") : null;
case (int)matrix2.enums.NodeTypeEnums.Enums.Link:
return (string)_Data;
case (int)matrix2.enums.NodeTypeEnums.Enums.Image:
return (string)_Data;
default:
return (string)_Data;
}
}
set
{
_Data = value;
}
}
данные используются следующим образом:
temp.Count() > 0 ? temp.FirstOrDefault().Data : " "
С его помощью, как это работает, но я не уверен, если это является лучшей реализацией и/или наиболее эффективной. Их лучший способ сделать это?
Используйте 'Any()' вместо 'Count()> 0', поскольку последний может завершиться перечислением всей последовательности. –
Прошу прощения, но, бог, это самый ужасный код, который я когда-либо видел за всю свою жизнь. –
@Brian Расмуссен: зачем использовать 'Any()', если 'FirstOrDefault()' уже проверяет, является ли последовательность пустой или нет? :-) – dtb