运算符`=='不能应用于`method group'和`method group'类型的操作数

时间:2015-10-23 13:11:29

标签: c# xamarin bluetooth

我正在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。 servicesObservableCollection

1 个答案:

答案 0 :(得分:3)

问题似乎与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)

是的,他们是推广方法