亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

將對象轉換為與 IEnumerable 集合相同的類型

將對象轉換為與 IEnumerable 集合相同的類型

C#
aluckdog 2022-01-16 19:56:31
本質上,我有帶參數的函數: ContainsValue(IEnumerable collection, object obj)我需要使用 Equals()Contains檢查集合obj 。具體來說,collection 是一個字符串數組,而 obj 是一個自定義類型/類(它稱為 FString,我不完全理解它是什么,但它至少在某種程度上是從字符串派生的)。不幸的是,解決方案需要是通用的,所以我不能明確引用自定義類型。所以我需要一種方法將 obj 轉換為集合的任何類型。這可能嗎?編輯:static bool ContainsValue(IEnumerable collection, object obj){    // cast obj into same type as collection elements    foreach(var element in collection)    {        if() // element equals obj        {            return true;        }    }    return false;}
查看完整描述

3 回答

?
青春有我

TA貢獻1784條經驗 獲得超8個贊

您應該可以在您的if聲明中使用它:

if(object.Equals(element, obj))

然后你根本不需要投射,或者擔心空值等。


查看完整回答
反對 回復 2022-01-16
?
MMMHUHU

TA貢獻1834條經驗 獲得超8個贊

使用IEnumerable's OfType方法提取您正在尋找的目標類型,如果有一些檢查您提到的相等情況......例如這個例子

return collection.OfType<string>()
                 .Any( str => str.Equals("Jabberwocky"));


查看完整回答
反對 回復 2022-01-16
?
守著一只汪

TA貢獻1872條經驗 獲得超4個贊

您可以像這樣使用它(如果您可以訪問集合的字段):


string objAsString = obj?.ToString() ?? "";


if(collection.Any(x => x.field == objAsString))

{

    //Do something...

}


查看完整回答
反對 回復 2022-01-16
  • 3 回答
  • 0 關注
  • 219 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號