我有应该接受变量的这段代码usersResp
,查看它是否与yes
数组中的元素匹配(即在Yes
方法中)并打印出变量Case
。根据匹配情况,要么是0
没有匹配项(数组中没有与相同的元素usersResp
),要么1
是元素匹配。
这是代码。
static void Main(string[] args)
{
string usersResp = "y";
int Case = 0;
Yes(usersResp, Case);
Console.WriteLine(Case);
}
static void Yes(string UserResponse, int Case)
{
string[] yes = new string[] { "y", "Y", "Yes", "yes", "yup", "Yup", "ok", "Ok", "Alright", "alright", "yeah", "Yeah", "Sure", "sure", "of course", "Of course", "k", "K" };
for (int i = 0; i < yes.Length; i++)
{
if (UserResponse == yes[i])
{
Case = 1;
return;
}
}
}
我不知道为什么它运行不正确并且Case
始终保持为0。请提供帮助。谢谢。
忽略概念上或其他方面的任何其他问题。
您将需要int case
通过引用传递,而不是传递价值
static void Yes(string UserResponse, ref int Case)
其他资源
在方法的参数列表中使用时,ref关键字指示参数是通过引用而不是通过值传递的。ref关键字使形式参数成为参数的别名,该别名必须是变量。换句话说,对参数的任何操作都是在自变量上进行的。
您可以执行此操作的另一种方法是将aHashSet
与字符串比较器一起使用。仅需使用即可为您提供良好的快速查找Contains
。在下面的示例中,我使用StringComparer.InvariantCultureIgnoreCase
which将不区分大小写
public static HashSet<string> YesHashSet = new(
new[] { "y", "yes", "yup", "ok", "alright", "Yeah", "sure", "of course", "K" },
StringComparer.InvariantCultureIgnoreCase);
...
public static bool IsYes(string userResponse)
=> YesHashSet.Contains(userResponse);
更多资源
代表一组值。
HashSet<T>(IEnumerable<T>, IEqualityComparer<T>)
初始化HashSet类的新实例,该实例使用指定的相等比较器作为集合类型,包含从指定的集合复制的元素,并具有足够的容量来容纳复制的元素数量。
StringComparer.InvariantCultureIgnoreCase Property
获取一个StringComparer对象,该对象使用不变区域性的单词比较规则执行不区分大小写的字符串比较。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句