所以在C#中,switch语句只支持整数类型(不是Guid),所以简单的O(1)比较表看起来不可能.
在Guid上匹配的计算最有效的方法是什么?
起初我想
if(gMyGuid == new Guid("VALUE")) else if (gMyGuid == new Guid("VALUE2") else if (gMyGuid == new Guid("VALUE3") ... else if (gMyGuid == new Guid("VALUEn")
然而,通过这样做,我每次都会创建一个新的Guid的实例来进行比较.我可以将Guid转换为字符串,然后比较字符串,但字符串比较是一个很长的字符串进行比较.
感谢任何建议.
解决方法
您可以创建一个
System.Collections.Generic.Dictionary
< Guid,...>哪里是对你有用的东西
在程序启动时,使用您需要识别的GUID和值填充字典.
然后,使用字典的TryGetValue
方法通过其引用来检索值.
我没有说出任何字面意思,因为我不知道你想要做什么.也许你想要运行一些函数,然后一个方法指针(Func< T>或类似的东西)可能是适当的,或者是提供要调用的方法的接口类型.这取决于该guid的上下文/目的比较代码.