运算符“==”不能应用于“方法组”和“方法组”类型的操作数

Operator `==' cannot be applied to operands of type `method group' and `method group'

我正在用 C# 做一些 BLE 工作,我想在其中浏览数据列表并找到具有特定 ID 的条目。但是,以下代码抛出错误 Operator '==' cannot be applied to operands of type 'method group' and 'method group'。当您尝试比较两种不同类型的数据时,我只遇到过这个错误,为什么要用两种类型的相同数据来做呢?

try {
    foreach(var data in services)
    {
        if (data!=null && data.ID.PartialFromUuid == 0xA001.UuidFromPartial){ GasSenseService = data; }

        Debug.WriteLineIf (data.Name == "Heart Rate", "SERVICE: data equals chosen value");
    }
}
catch {

    Debug.WriteLine ("Exception");
} 

我正在使用 Monkey Robotics nuget,它将每个数据定义为一个 IService。 services 是一个 ObservableCollection.

问题似乎与 data.ID.PartialFromUuid 0xA001.UuidFromPartial 有关。我猜 0xA001 是一个十六进制整数文字, PartialFromUuid UuidFromPartial 是扩展方法。将您的代码更改为 调用方法!

if (data!=null && data.ID.PartialFromUuid() == 0xA001.UuidFromPartial())

在 C# 中,使用 () 调用方法,即使该方法没有参数。

其实我什么都不用猜。检查此源代码文件:https://github.com/xamarin/Monkey.Robotics/blob/master/Source/Platform%20Stacks/Robotics.Mobile.Core/Bluetooth/LE/Extensions.cs

public static Guid UuidFromPartial(this Int32 @partial) 
public static string PartialFromUuid(this Guid uuid)

是的,它们是扩展方法