gpt4 book ai didi

c# - 将一个值与整个数组进行比较? (C#)

转载 作者:可可西里 更新时间:2023-11-01 07:49:32 25 4
gpt4 key购买 nike

假设我有一个 C# 变量和数组:

int variable_1 = 1;
int[3] array_1 = {1,2,3};

如何在不遍历 array_1 的情况下检查 variable_1 的值是否等于 array_1 中的任何值?

最佳答案

嗯,有些东西必须循环。以下任何一项都有效:

bool exists = array.Contains(variable_1);
bool exists = Array.IndexOf(array_1, variable_1) != -1;
bool exists = Array.Exists(array_1, x => x == variable_1);
bool exists = Array.FindIndex(array_1, x => x == variable_1) != -1;
bool exists = array_1.Any(x => x == variable_1);

所有使用 lambda 表达式的版本对我来说都感觉有点矫枉过正,但如果您发现自己处于不知道要搜索的实际值(只是一些条件)的情况下,它们可能会有用。

如果你知道数组是有序的,你可以使用:

bool exists = Array.BinarySearch(array_1, variable_1) >= 0;

这将是 O(log n) 而不是 O(n)(所有其他的都是),但它确实需要先对数组进行排序。

我个人通常会使用第一种形式 - 假设您使用的是 .NET 3.5 或更高版本。

如果您需要检查多个项目并且数组很大,您可能需要创建一个 HashSet<int> :

HashSet<int> hashSet = new HashSet<int>(array_1);
bool exists = hashSet.Contains(variable_1);

关于c# - 将一个值与整个数组进行比较? (C#),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2579421/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com