Joh*_*ell 11 c# performance guid
所以在C#中,switch语句只支持整数类型(不是Guids),所以一个简单的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")
Run Code Online (Sandbox Code Playgroud)
但是,通过这样做,我每次都要创建一个新的Guid实例进行比较.我可以将Guid转换为字符串然后比较字符串,但字符串比较是一个很长的字符串用于比较.
感谢任何建议.
O. *_*per 17
您可以创建一个对您有用的地方.System.Collections.Generic.Dictionary
<Guid, ...>
...
程序启动时,使用您需要识别的guid和值填充字典.
然后,使用TryGetValue
字典的方法通过其guid检索值.
我没有说明任何文字,...
因为我不知道你想用guid做什么.也许你想运行一些函数,然后一个方法指针(Func<T>
或类似的东西)可能是合适的,或者是一个提供你想要调用的方法的接口类型.这取决于比较代码的guid的上下文/目的.
在c#7中,您现在可以为此使用带模式匹配的开关。
switch (gMyGuid )
{
case var g when (g == new Guid("VALUE")):
break;
case var g when (g == new Guid("VALUE2")):
break;
case var g when (g == new Guid("VALUEN")):
break;
default:
break;
}
Run Code Online (Sandbox Code Playgroud)
如果您已定义静态只读新Guid“ ..”)变量,则此方法也适用。
归档时间: |
|
查看次数: |
6265 次 |
最近记录: |