gpt4 book ai didi

c# switch 语句 return 适合替换 break

转载 作者:IT王子 更新时间:2023-10-29 04:12:44 24 4
gpt4 key购买 nike

这是处理 C# switch 语句的合适方法还是仍然需要显式中断? reference

  public static string ToRegistryString(AliceKey.AliceKeyPaths aliceKeyPath)
{
switch (aliceKeyPath)
{
case AliceKey.AliceKeyPaths.NET_CLR_DATA:
return @"\.NET CLR Data\";
case AliceKey.AliceKeyPaths.NET_CLR_NETWORKING:
return @"\.NET CLR Networking\";
case AliceKey.AliceKeyPaths.NET_DATA_PROVIDER_MSSQL:
return @"\.NET Data Provider for SqlServer\";
case AliceKey.AliceKeyPaths.NET_DATA_PROVIDER_ORACLE:
return @"\.NET Data Provider for Oracle\";
}
return new string(new char[0]);
}

最佳答案

没关系。关键是 case block 的末尾应该是不可到达的 - 它就在这里,因为你已经返回了。

你为什么回来 new string(new char[0])而不仅仅是 ""或 string.Empty尽管?如果你试图确保它每次都是不同的字符串,你实际上会遇到一个非常奇怪的极端情况 - 尽管调用了 new string(...)该代码实际上将始终返回相同的引用...

最后:我实际上建议将此 switch/case block 更改为一个 Dictionary<AliceKey.AliceKeyPaths, string> :

private static readonly Dictionary<AliceKey.AliceKeyPaths, string> RegistryMap =
new Dictionary<AliceKey.AliceKeyPaths, string>
{
{ AliceKey.AliceKeyPaths.NET_CLR_DATA, @"\.NET CLR Data\" },
{ AliceKey.AliceKeyPaths.NET_CLR_NETWORKING, @"\.NET CLR Networking\" },
// etc
};

public static string ToRegistryString(AliceKey.AliceKeyPaths aliceKeyPath)
{
string value;
return RegistryMap.TryGetValue(aliceKeyPath, out value) ? value : "";
}

关于c# switch 语句 return 适合替换 break,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3196163/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com