我相信這個答案很簡單,但我試圖編寫一個if語句(C#5.0)來確定匿名類型是否爲空。以下是我的代碼的簡化版本:如何確定匿名類型的對象是否爲空?
public void DoSomething(object attributes)
{
// This is the line I need??
if (atrributes != new {}) {
}
}
根據需要動態創建屬性變量,有時它是空的。
那麼如何確定匿名類型是否爲空?
我相信這個答案很簡單,但我試圖編寫一個if語句(C#5.0)來確定匿名類型是否爲空。以下是我的代碼的簡化版本:如何確定匿名類型的對象是否爲空?
public void DoSomething(object attributes)
{
// This is the line I need??
if (atrributes != new {}) {
}
}
根據需要動態創建屬性變量,有時它是空的。
那麼如何確定匿名類型是否爲空?
匿名類型不爲==
提供運算符重載,儘管在這種情況下它並不重要,因爲其中一個參數是類型化對象。但是,C#編譯器確實提供了Equals,GetHashCode和ToString實現。
使用靜態object.Equals
,方法將做相應的null檢查,然後調用虛擬的Equals第一個參數方法:
object.Equals(attributes, new { });
你也可以緩存靜態實例如果你關心的開銷的每個比較的分配。
如果空你的意思是沒有屬性,你可以使用反射:如果`null`
var o1 = new {};
o1.GetType().GetProperties().Count(); //==0
var o2 = new {test=1};
o2.GetType().GetProperties().Count(); //==1
檢查? – Loocid
由於匿名類型不提供==運算符重載,也許你的意思是'object.Equals(htmlAttributes,new {})'。 –
我寧願用合適的構建器編寫一個類,並根據您的需要構建對象。如果你沒有設置任何屬性,只需創建一個所謂的[空對象](https://sourcemaking.com/design_patterns/null_object)或返回'null'。 – ckruczek