gpt4 book ai didi

c# - 使用 分配委托(delegate)时出错? : Syntax

转载 作者:太空狗 更新时间:2023-10-30 00:27:48 28 4
gpt4 key购买 nike

我已经创建了一个委托(delegate)和两个匹配方法。

private delegate bool CharComparer(char a, char b);

// Case-sensitive char comparer
private static bool CharCompare(char a, char b)
{
return (a == b);
}

// Case-insensitive char comparer
private static bool CharCompareIgnoreCase(char a, char b)
{
return (Char.ToLower(a) == Char.ToLower(b));
}

当我尝试使用以下语法将这些方法中的任何一个分配给委托(delegate)时(请注意,此代码位于同一类的静态方法中):

CharComparer isEqual = (ignoreCase) ? CharCompareIgnoreCase : CharCompare;

我得到错误:

Type of conditional expression cannot be determined because there is no implicit conversion between 'method group' and 'method group'

我可以使用常规的 if ... else 语句来完成这项任务,而且效果很好。但是我不明白为什么我不能使用更紧凑的版本并且我不明白错误信息。有谁知道这个错误的含义吗?

最佳答案

条件运算符中的类型在赋值之前解析,因此编译器不能使用赋值中的类型来解析条件运算符。

只需将其中一个操作数转换为 CharComparer,以便编译器知道使用该类型:

CharComparer isEqual = ignoreCase ? (CharComparer)CharCompareIgnoreCase : CharCompare;

关于c# - 使用 分配委托(delegate)时出错? : Syntax,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5128011/

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