2016-06-23 4 views
0

Как преобразовать это в C# 6 Null Conditional Check?C# 6 Null Условная проверка

var durationhours = product.ProductAudioAsset.TotalLengthInSeconds != null 
    ? (short?)TimeSpan.FromSeconds(product.ProductAudioAsset.TotalLengthInSeconds.Value).TotalHours 
    : null; 

где TotalLengthInSeconds обнуляемым короткий

+0

Я хотел бы использовать дополнительный временный для ясности. Почему, по-вашему, нулевой условный способ - это путь? – ClickRick

+0

http://stackoverflow.com/questions/31811392/null-conditional-operator-not-working-with-nullable-types –

+1

Почему вы работаете с 'short'? Оставайтесь с «double» - это более точно и быстрее. – Enigmativity

ответ

5

Вы можете создать метод расширения, чтобы помочь:

public static short SecondsAsTotalHours(this short value) 
{ 
    return (short)TimeSpan.FromSeconds(value).TotalHours; 
} 

Тогда вы можете сделать это:

var durationhours = product.ProductAudioAsset.TotalLengthInSeconds?.SecondsAsTotalHours(); 
+3

Это хороший ответ. Я бы переименовал TimeSpanFromSeconds в SecondsAsTotalHours или что-то подобное. – CRice

+0

@CRice - Хорошая точка. – Enigmativity

Смежные вопросы