相关疑难解决方法(0)

String上的C++/CLI开关

在其他.NET语言(如C#)中,您可以打开字符串值:

string val = GetVal();
switch(val)
{
case "val1":
  DoSomething();
  break;
case "val2":
default:
  DoSomethingElse();
  break;
}
Run Code Online (Sandbox Code Playgroud)

在C++/CLI中似乎不是这种情况

System::String ^val = GetVal();
switch(val)  // Compile error
{
   // Snip
}
Run Code Online (Sandbox Code Playgroud)

是否有一个特殊的关键字或其他方式使其适用于C++/CLI,就像在C#中一样?

.net string c++-cli switch-statement

3
推荐指数
1
解决办法
5804
查看次数

"if"语句的影响(表现明智)是什么?

我的好友说,为了效率,他试图用尽可能少的if/else语句进行编程.当我问他为什么说如果/其他人占用该计划资源的一个重要部分时,他就试图远离他们.

他是对的吗?有没有更好的方法来执行if/else样式代码而不实际使用该结构?开关/箱体结构是否更好?

编辑:他不是指一种特定的语言,而是更多的一般做法.以及UNIX/Linux和Windows平台.

performance programming-languages

1
推荐指数
2
解决办法
1258
查看次数

C#中的案例/开关语句

我想知道是否有办法声明大量的case语句而不必编写所有的语句.例如,我的代码:

            switch (Weight)
            {
                case 0 to 2;
                    ShippingCost = "3.69";

                case 3 to 4;
                    ShippingCost = "4.86";

                case 5 to 6;
                    ShippingCost = "5.63";

                case 7 to 8;
                    ShippingCost = "5.98";

                case 9 to 10;
                    ShippingCost = "6.28";

                case 11 to 30;
                    ShippingCost = "15.72";

            }
Run Code Online (Sandbox Code Playgroud)

我开始将VB转换为C#,并意识到为了拥有多个case语句,你必须声明它们.你可以看到我有11到30而且不想拥有所有这些线条.

c# vb.net

1
推荐指数
4
解决办法
392
查看次数

使用多个 if 语句还是后面有很多 else if 语句更有效?

作为一个例子,在开始时有很多ifs 和很多else if在一个之后if。我在下面添加了一些伪代码。

if (x=1)
  print x;
if (x=2)
  print x;
if (x=3)
  print x;
Run Code Online (Sandbox Code Playgroud)

或者

if (x=1)
  print x;
else if (x=2)
  print x;
else if (x=3)
  print x;
Run Code Online (Sandbox Code Playgroud)

c# optimization

1
推荐指数
1
解决办法
3087
查看次数

评估多个布尔值与 if 的开关的 C# 性能(特定用例)

我最近开始维护一个成熟的产品,并且在整个过程中我看到像这样使用 switch 语句:

switch (true)
{
    case true when object.firstBoolValue:
        // do something
        break;
    case true when object.secondBoolValue:
        // do something
        break;
    case true when object.thirdBoolValue:
        // do something
        break;
}
Run Code Online (Sandbox Code Playgroud)

就个人而言,我更愿意这样写:

if (object.firstBoolValue)
    // do something
    return;
if (object.secondBoolValue)
    // do something
    return;
if (object.thirdBoolValue)
    // do something
    return;

// do default
return;
Run Code Online (Sandbox Code Playgroud)

主要问题:哪个更有利于可读性?次要问题:哪种设计(如果有)性能更好?

c#

0
推荐指数
1
解决办法
127
查看次数