簡體   English   中英

XPathNavigator.Evaluate(string)可以返回null嗎?

[英]Can XPathNavigator.Evaluate(string) return null?

XPathNavigator.Evaluate此重載能否返回null?

// Can "result" be null ?

object result = xmlDoc.CreateNavigator().Evaluate(xpathString);

如果答案為否,那么為什么瑞沙珀說該result可能為空?

string str = result.ToString();    // Resharper: Possible NullReferenceException

我在文檔中沒有發現任何可能導致輸入返回null的輸入。 我還嘗試檢查此功能參考源 ,但效果不佳。

我知道R#使用代碼注釋 ,但是我仍然不信任該警告,因為我嘗試了不同的輸入,但沒有一個輸入返回null。

查看代碼,看起來確實不太可能從XPathNavigator.Evaluate獲得null 有幾種可能的代碼路徑可能會使您得到null ,但是我懷疑它們是病態的極端情況(如果評估應該是數字函數但不是數字的函數,或者查詢的操作數已經存在) null )。 我懷疑這些情況在正常情況下是否會發生。

我不知道為什么ReSharper在返回值上具有[CanBeNull]批注。 如果我不得不猜測,那是因為該方法是虛擬的,因此無法保證實現始終返回一個值。 或者因為它在沒有任何空值保證的另一個類上調用抽象方法,並且不檢查該值的返回,所以同樣,也不能保證它不會為null

注釋基於靜態控制流分析,只能帶您深入研究。 ReSharper將提供它可以提供的最強有力的提示。 如果知道它不為null ,它將對其進行注釋,如果不知道,則將其標記為[CanBeNull] ,並在警告方面出錯。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM