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

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

泛型、類型和數組

泛型、類型和數組

C#
呼啦一陣風 2022-06-12 15:23:17
“通用類型”可以是數組嗎?在它存在的情況下,如何訪問該數組?您可以將給定的泛型類型 T 作為數組訪問,當它是一個時,當它不是一個時,作為非數組訪問?例如:如果我有這樣的方法 ->void MustBeOfType<T>(T value){}我可以->MustBeOfType<int>(10);還有->MustBeOfType<int[]>( new int[] { 1, 2, 3 } );在這些通用方法中,它們能否按預期訪問值?- 一個作為 int 和一個作為 int[]?我認為 typeof(T).IsArray() 可能有一些東西......但我一生都無法弄清楚如何將參數轉換為一個數組。謝謝!
查看完整描述

2 回答

?
眼眸繁星

TA貢獻1873條經驗 獲得超9個贊

你可以......但是,我不確定你應該:


void MustBeOfType<T>(T value)

{

  Array array = value as Array;

  if (array != null) //It is an array

  {

    foreach (var arrayItem in array)

    {

    }


    for (int i = 0; i < array.Length; i++)

    {

      var arrayItem = array.GetValue(i);

    }

  }

  else //It is not an array

  {

  }

}


查看完整回答
反對 回復 2022-06-12
?
偶然的你

TA貢獻1841條經驗 獲得超3個贊

我不確定您要做什么,但通用類型可以是任何東西。您可以使用where子句對泛型類型進行限制,但這取決于您以及功能和上下文。


讓我們以列表為例。假設我們在 List 中有 List。然后我們將其定義為:


List<List<string>> myListOfList = new List<List<string>>();

你必須是類型也可以是任何東西(如果你沒有對 where 子句施加限制)


MustBeOfType<int[][]>()

MustBeOfType<List<List<string>>>()

MustBeOfType<AnyOtherGenericClass<List<string>>>()

并能夠訪問它:


class MustBeOfType<T>

{

    private T _value;

    MustBeofType(T value)

    {

         _value = value;

    }


}

為了能夠對 進行操作,您可以使用反射,或者如果您放置了 where 限制并且您的 where 限制具有 Type,那么您可以看到該 Type 的屬性。


查看完整回答
反對 回復 2022-06-12
  • 2 回答
  • 0 關注
  • 151 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號

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