【问题标题】:Get the first element of System.array?获取 System.array 的第一个元素?
【发布时间】:2019-10-10 22:36:31
【问题描述】:

我正在为DisplayFusion 中的任务编写脚本。有一个包含窗口类的数组,我需要第一个。

如何获取System.array的第一个元素不考虑索引类型

我试过了

String windowClass = BFS.Window.GetClass(myArray[Array.IndexOf(myArray)]);

但这会引发错误

(方法'IndexOf'没有重载,接受1-Arguments)

【问题讨论】:

  • myArray[0] 会给你第一个元素。不确定您在这里尝试使用 IndexOf 实现什么,但错误是因为 IndexOf 需要(至少)两个输入值 - 您要搜索的数组和要搜索的值。 docs.microsoft.com/en-us/dotnet/api/… 。 IndexOf 的目的是在数组中查找特定值的第一次出现 - 然后它会告诉您出现在哪个数组索引处。在您的代码中,您没有提供要搜索的特定值。
  • 答案在错误信息中:没有接受单个参数的IndexOf 的重载;您需要告诉它 of 什么 的索引(要查找)。因此,IndexOf 不是用于检索给定索引的元素,而是用于查找给定元素的索引。
  • 那么如何获取第一个索引呢?
  • 第一个索引始终为 0。因此myArray[0] 将返回数组中的第一个元素。 docs.microsoft.com/en-us/dotnet/csharp/programming-guide/arrays
  • 通常当程序员编写 Array 类代码时,他们正在处理互操作。特别是 COM 库并不总是创建第一个索引为 0 的数组,Basic 程序员希望从 1 开始。使用 Array.GetLowerBound()。

标签: c#


【解决方案1】:

IndexOf 用于查找数组中与您传递的值匹配的第一个元素的索引。我想你在关注[0]

String windowClass = BFS.Window.GetClass(myArray[0]);

请注意,如果数组为空,则会抛出异常。

您也可以使用System.Linq 中的.First()FirstOrDefault(),但[0] 是为您的需要而设计的。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2022-08-17
    • 1970-01-01
    • 2021-10-27
    • 1970-01-01
    • 2016-12-31
    • 2010-12-27
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多