2016-03-15 39 views
4

什麼是檢查System.Linq.Expressions.Expression實例是否爲空的最佳方法?例如,如下所示:如何檢查表達式是否爲空(void)?

Expression expression = Expression.Empty(); 
... 
if (expression.IsEmpty) { ... 

只有IsEmpty不存在。

一個想法是要測試的ToString結果:

if (expression.ToString() == "default(Void)") { ... 

,但似乎並不正確。

回答

3

根據文檔Empty()返回

具有NodeType屬性等於默認 和類型屬性設置爲空隙的DefaultExpression。

,所以你應該能夠使用:

if(expression.NodeType == ExpressionType.Default && expression.Type == typeof(void)) 
+0

但是,這並不意味着有不能永遠是一個void類型和默認值,表示不是其他東西的表達空的表達。 – Servy

+0

這就是我的下一個問題。我看到默認的部分,但不是測試'expression.Type == typeof(System.Void)'足夠嗎?某物不能比空虛本身更空虛......可以嗎? – Dejan

+0

@Dejan事實並非如此。有各種各樣的沒有類型的表達。它只是意味着它們不會產生一個值(因此也會用於它們的副作用)。 – Servy