.NET / ReSharper: Анализ на NullReferenceException и контракты для него

Если вы используете ReSharper, то вы, наверняка, знакомы с его подсветкой «Possible ‘NullReferenceException’». В этой статье я кратко расскажу об анализаторе, который выводит предупреждения такого рода, и о том, как ему помочь делать это лучше.



Сразу рассмотрим пример:


public string Bar(bool condition)

{

  string iAmNullSometimes = condition ? "Not null value" : null;

  return iAmNullSometimes.ToUpper();

}




* This source code was highlighted with Source Code Highlighter.



ReSharper справедливо подсветит iAmNullSometimes во второй строке метода с таким предупреждением. Теперь выделим метод:


public string Bar(bool condition)

{

  string iAmNullSometimes = GetNullWhenFalse(condition);

  return iAmNullSometimes.ToUpper();

}



public string GetNullWhenFalse(bool condition)

{

  return condition ? "Not null value" : null;

}




* This source code was highlighted with Source Code Highlighter.



После этой операции предупреждение пропадает. Почему так происходит?



AD: