如何获取数组中的元素
How to get an element within an array
我有一个固定的字符串列表,我把它放在一个数组中。我正在使用 IndexOf()
来从这样的数组中获取一个元素,但这似乎不起作用:
using System.Runtime;
...
static string[] Alarm_Names = new string[3] {"A1", "A2", "A3"}
static bool[] arr_Alarms = new bool[3] {false, false, false};
internal static void HandleAlarm(..., string code, ...)
{
if (arr_Alarms[IndexOf(Alarm_Names, code)]) return; // does not compile
if (arr_Alarms[Array.IndexOf(Alarm_Names, code)]) return; // does not compile
function/static 方法 IndexOf()
似乎不存在,尽管 this page 另有提及。
这很可能是因为我在 C# .Net Framework 4.6.1 中编程,对于上述页面的 .Net 6 版本来说,它还不够新。
如您所见,我有一个常量字符串列表,我想为每个字符串创建一个布尔值列表,如果输入一个字符串作为函数参数,我想检查用于检查值的布尔列表,函数 IndexOf()
是完美的工具。
还有其他简单的方法吗? (或者我的分析是错误的,我可以做一些非常简单的事情来完成这项工作,而不修改我的目标 .Net 框架的版本吗?)
IndexOf
是在Array
class 上定义的静态方法。由于您的代码不是 class 的一部分,您需要在它前面加上 class 名称前缀,就像您在第二次尝试中所做的那样:
Array.IndexOf(Alarm_Names, code)
除此之外,代码中唯一的编译器错误是 Alarm_Names
字段中缺少分号。
修复该问题后,您的代码将编译 (除非未显示的代码部分出现其他错误)。
using System; // needed for accessing "Array"
class YourClass
{
static string[] Alarm_Names = new string[3] {"A1", "A2", "A3"};
static bool[] arr_Alarms = new bool[3] {false, false, false};
internal static void HandleAlarm(..., string code, ...)
{
if (arr_Alarms[Array.IndexOf(Alarm_Names, code)]) return;
如果仍然无法编译,您需要列出实际遇到的编译器错误。
注意: 如果您使用的是 C# 6 或更高版本,则可以使用 using static
功能使 Array
class 可以在没有 Array.
前缀的情况下调用:
using static System.Array;
class YourClass
{
static string[] Alarm_Names = new string[3] {"A1", "A2", "A3"};
static bool[] arr_Alarms = new bool[3] {false, false, false};
internal static void HandleAlarm(..., string code, ...)
{
if (arr_Alarms[IndexOf(Alarm_Names, code)]) return;
static void Main(string[] args)
{
string[] Alarm_Names = new string[3] { "A1", "A2", "A3" };
bool[] arr_Alarms = new bool[3] { false, false, false };
Console.WriteLine(HandleAlarm(arr_Alarms, "A2", Alarm_Names));
Console.ReadKey();
}
static bool HandleAlarm(bool[] a, string code, string[] A)
{
if (a[Array.IndexOf(A, code)])//false
{
return a[Array.IndexOf(A, code)];
}
return true;
}
我有一个固定的字符串列表,我把它放在一个数组中。我正在使用 IndexOf()
来从这样的数组中获取一个元素,但这似乎不起作用:
using System.Runtime;
...
static string[] Alarm_Names = new string[3] {"A1", "A2", "A3"}
static bool[] arr_Alarms = new bool[3] {false, false, false};
internal static void HandleAlarm(..., string code, ...)
{
if (arr_Alarms[IndexOf(Alarm_Names, code)]) return; // does not compile
if (arr_Alarms[Array.IndexOf(Alarm_Names, code)]) return; // does not compile
function/static 方法 IndexOf()
似乎不存在,尽管 this page 另有提及。
这很可能是因为我在 C# .Net Framework 4.6.1 中编程,对于上述页面的 .Net 6 版本来说,它还不够新。
如您所见,我有一个常量字符串列表,我想为每个字符串创建一个布尔值列表,如果输入一个字符串作为函数参数,我想检查用于检查值的布尔列表,函数 IndexOf()
是完美的工具。
还有其他简单的方法吗? (或者我的分析是错误的,我可以做一些非常简单的事情来完成这项工作,而不修改我的目标 .Net 框架的版本吗?)
IndexOf
是在Array
class 上定义的静态方法。由于您的代码不是 class 的一部分,您需要在它前面加上 class 名称前缀,就像您在第二次尝试中所做的那样:
Array.IndexOf(Alarm_Names, code)
除此之外,代码中唯一的编译器错误是 Alarm_Names
字段中缺少分号。
修复该问题后,您的代码将编译 (除非未显示的代码部分出现其他错误)。
using System; // needed for accessing "Array"
class YourClass
{
static string[] Alarm_Names = new string[3] {"A1", "A2", "A3"};
static bool[] arr_Alarms = new bool[3] {false, false, false};
internal static void HandleAlarm(..., string code, ...)
{
if (arr_Alarms[Array.IndexOf(Alarm_Names, code)]) return;
如果仍然无法编译,您需要列出实际遇到的编译器错误。
注意: 如果您使用的是 C# 6 或更高版本,则可以使用 using static
功能使 Array
class 可以在没有 Array.
前缀的情况下调用:
using static System.Array;
class YourClass
{
static string[] Alarm_Names = new string[3] {"A1", "A2", "A3"};
static bool[] arr_Alarms = new bool[3] {false, false, false};
internal static void HandleAlarm(..., string code, ...)
{
if (arr_Alarms[IndexOf(Alarm_Names, code)]) return;
static void Main(string[] args)
{
string[] Alarm_Names = new string[3] { "A1", "A2", "A3" };
bool[] arr_Alarms = new bool[3] { false, false, false };
Console.WriteLine(HandleAlarm(arr_Alarms, "A2", Alarm_Names));
Console.ReadKey();
}
static bool HandleAlarm(bool[] a, string code, string[] A)
{
if (a[Array.IndexOf(A, code)])//false
{
return a[Array.IndexOf(A, code)];
}
return true;
}