2014-09-18 3 views
1

Resharper дает возможное опорный нуль предупреждение для вызова метода Element только после того, как он был cheked для нулевого (метода TransformElementBad), но все в порядке, если я держу значение элемента в некоторых переменных. Правильно ли ReSharper, и я должен использовать его предложение, или это ошибка?Resharper возможно пустая ссылка предупреждение о методе XElement Элемента

// JetBrains ReSharper 8.2.1 
// Build 8.2.1000.4556 on 2014-05-19T09:12:38 

public class Transformer 
{ 
    private void TransformElementBad(XElement field) 
    { 
     var format = string.Empty; 

     if (field.Element("ViewFormatInfo") != null) 
      format = field.Element("ViewFormatInfo").Value.Trim(); // ![got][1] warning here 

     Console.WriteLine(format); 
    } 

    private void TransformElementGood(XElement field) 
    { 
     var format = string.Empty; 

     var element = field.Element("ViewFormatInfo"); 
     if (element != null) 
      format = element.Value.Trim(); 

     Console.WriteLine(format); 
    } 
} 

ответ

1

От поставщика: Метод Элемента не является чистым и не может вернуть тот же результат с теми же аргументами. Таким образом, вы должны скопировать его результат в локальную переменную, если вы хотите, чтобы избежать этого предупреждения https://youtrack.jetbrains.com/issue/RSRP-424149

1

Value может быть null, поэтому он дает предупреждение, так что вы должны проверить null перед вызовом Trim(), если он уверен, что всегда будет в нем Value тогда нет необходимости нулевой проверки ,

format = field.Element("ViewFormatInfo").Value !=null ? field.Element("ViewFormatInfo").Value.Trim() : string.Empty; 
+0

Я всегда любил оператор Coalesce: http://stackoverflow.com/a/2057291/2258 –

+0

@Ehsan взглянуть на скриншот http://i.stack.imgur.com/165MA.png Его оленья кожа, выделенное значение "Value", только Element() вызова – bonzaster

+1

вы не проверяя поле, чтобы быть нулевым, если '' (поле! = NULL) '' в сначала –

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

  • Нет связанных вопросов^_^