从Array.BinarySearch <T>(T [],int,int,T)引发的ArgumentException

米沙克斯

这个MSDN页面记录了方法

public static int BinarySearch<T>(
    T[] array,
    int index,
    int length,
    T value
)

在异常列表上,它声明在以下情况下引发ArgumentException:

索引和长度未在数组中指定有效范围。
-或-
值的类型与数组的元素不兼容。

这怎么可能?在什么情况下T不能与T []中的元素兼容?我怀疑这可能是文档中的错误,还是我缺少基本知识?

PMF

上面给出的链接,我尝试了几种情况。

此处具有“填充”的定义:

public static void Fill(object[] array, int index, int count, object value)
    {
        for (int i = index; i < index + count; i++)
        {
            array[i] = value;
        }
    }

确实可以ArrayTypeMismatchException在这里进行第三次调用:

string[] strings = new string[100];
Fill(strings, 0, 100, "Undefined");
Fill(strings, 0, 10, null);
Fill(strings, 90, 10, 0); // a boxed 0 is not a string. 

但是,如果我这样定义Fill:公共静态void FillT(T []数组,int索引,int计数,T值){for(int i =索引; i <索引+计数; i ++){array [i] =值; }}

没有得到说异常,因为下面的行甚至没有编译

FillT(strings, 90, 10, 0);

这也不

FillT<string>(strings, 90, 10, 0);

因此,在这种情况下,编译器知道第三个参数必须为字符串类型,并且不能在其中传递int值。在这种情况下,似乎使用泛型有助于避免令人讨厌的错误。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

从Array.BinarySearch <T>(T [],int,int,T)引发的ArgumentException

来自分类Dev

模板<int T> C ++

来自分类Dev

“ T”与“ Int”不同

来自分类Dev

Can't Add to an Array

来自分类Dev

Observable<Array<T>> 到 Observable<T>

来自分类Dev

用T = int&返回T(t),怎么办?

来自分类Dev

是sizeof(T)== sizeof(int)吗?

来自分类Dev

是sizeof(T)== sizeof(int)吗?

来自分类Dev

Int不能转换为T

来自分类Dev

IQueryable <T> .OrderBy <T,对象>引发:无法将类型“ System.Int16”强制转换为类型“ System.Object”

来自分类Dev

List <T>构造函数(IEnumerable <T>)不接受从Array.CreateInstance(Type,Int32)创建的数组

来自分类Dev

Java Array binarySearch()插入点

来自分类Dev

Crystal如何将Array(T)转换为Array(T?)

来自分类Dev

来自带符号的int的std :: make_array <size_t>

来自分类Dev

'(@lvalue Int)-> $ T7'与'Dictionary <Int,Int>'不同

来自分类Dev

动态整数大小:int64_t,int32_t,uint32_t等

来自分类Dev

动态整数大小:int64_t,int32_t,uint32_t等

来自分类Dev

array <T>和array <T ^>之间的区别,其中T为ValueType

来自分类Dev

array <T>和array <T ^>之间的区别,其中T为ValueType

来自分类Dev

比较int64_t和uint64_t

来自分类Dev

Scala类型推断:无法从Array [T]推断IndexedSeq [T]

来自分类Dev

为什么Kotlin Array <T>不实现Iterable <T>

来自分类Dev

为什么Array [T forSome {类型T; }]均值数组[Any]

来自分类Dev

Scala从Array [T]隐式转换为IndexedSeq [T]

来自分类Dev

Typescript Array [T]接受{..T}作为有效类型

来自分类Dev

C ++-将vector <T>转换为vector <array <T >>

来自分类Dev

如何从ReadOnlySpan <T>复制到Array <T>?

来自分类Dev

从Array [T]到IndexedSeq [T]的Scala隐式转换

来自分类Dev

`。<T>`在Array。<T>`中是什么意思?

Related 相关文章

  1. 1

    从Array.BinarySearch <T>(T [],int,int,T)引发的ArgumentException

  2. 2

    模板<int T> C ++

  3. 3

    “ T”与“ Int”不同

  4. 4

    Can't Add to an Array

  5. 5

    Observable<Array<T>> 到 Observable<T>

  6. 6

    用T = int&返回T(t),怎么办?

  7. 7

    是sizeof(T)== sizeof(int)吗?

  8. 8

    是sizeof(T)== sizeof(int)吗?

  9. 9

    Int不能转换为T

  10. 10

    IQueryable <T> .OrderBy <T,对象>引发:无法将类型“ System.Int16”强制转换为类型“ System.Object”

  11. 11

    List <T>构造函数(IEnumerable <T>)不接受从Array.CreateInstance(Type,Int32)创建的数组

  12. 12

    Java Array binarySearch()插入点

  13. 13

    Crystal如何将Array(T)转换为Array(T?)

  14. 14

    来自带符号的int的std :: make_array <size_t>

  15. 15

    '(@lvalue Int)-> $ T7'与'Dictionary <Int,Int>'不同

  16. 16

    动态整数大小:int64_t,int32_t,uint32_t等

  17. 17

    动态整数大小:int64_t,int32_t,uint32_t等

  18. 18

    array <T>和array <T ^>之间的区别,其中T为ValueType

  19. 19

    array <T>和array <T ^>之间的区别,其中T为ValueType

  20. 20

    比较int64_t和uint64_t

  21. 21

    Scala类型推断:无法从Array [T]推断IndexedSeq [T]

  22. 22

    为什么Kotlin Array <T>不实现Iterable <T>

  23. 23

    为什么Array [T forSome {类型T; }]均值数组[Any]

  24. 24

    Scala从Array [T]隐式转换为IndexedSeq [T]

  25. 25

    Typescript Array [T]接受{..T}作为有效类型

  26. 26

    C ++-将vector <T>转换为vector <array <T >>

  27. 27

    如何从ReadOnlySpan <T>复制到Array <T>?

  28. 28

    从Array [T]到IndexedSeq [T]的Scala隐式转换

  29. 29

    `。<T>`在Array。<T>`中是什么意思?

热门标签

归档