我正在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
。
答案 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)
是的,他们是推广方法 。