在C中有一个switch构造,它使一个人能够根据一个测试整数值执行不同的条件代码分支,例如,
int a;
/* Read the value of "a" from some source, e.g. user input */
switch ( a ) {
case 100:
// Code
break;
case 200:
// Code
break;
default:
// Code
break;
}
Run Code Online (Sandbox Code Playgroud)
如何为字符串值获得相同的行为(即避免所谓的" if- else阶梯"),即char *?
如果我有一个switch-case语句,其中switch中的对象是字符串,是否可以进行ignoreCase比较?
我有例如:
string s = "house";
switch (s)
{
case "houSe": s = "window";
}
Run Code Online (Sandbox Code Playgroud)
将获得价值"窗口".如何覆盖switch-case语句,以便使用ignoreCase比较字符串?
如何在刀片模板中使用switch?我用的时候:
@switch($login_error)
@case(1)
`E-mail` input is empty!
@break
@case(2)
`Password` input is empty!
@break
@endswitch
Run Code Online (Sandbox Code Playgroud)
结果我将此文本视为明文.我更喜欢在几段代码中使用switch,因为它比我使用if时更干净.
但如果不可能只写它.
我实现了一个字体系统,通过char switch语句找出要使用的字母.我的字体图片中只有大写字母.我需要这样做,例如,'a'和'A'都有相同的输出.而不是2倍的案件数量,它可能是如下:
char c;
switch(c){
case 'a' & 'A': /*get the 'A' image*/; break;
case 'b' & 'B': /*get the 'B' image*/; break;
...
case 'z' & 'Z': /*get the 'Z' image*/; break;
}
Run Code Online (Sandbox Code Playgroud)
这在Java中可行吗?
C#总是允许你在switch()语句之间的case:语句中省略大括号吗?
如javascript程序员经常做的那样省略它们有什么作用?
例:
switch(x)
{
case OneWay:
{ // <---- Omit this entire line
int y = 123;
FindYou(ref y);
break;
} // <---- Omit this entire line
case TheOther:
{ // <---- Omit this entire line
double y = 456.7; // legal!
GetchaGetcha(ref y);
break;
} // <---- Omit this entire line
}
Run Code Online (Sandbox Code Playgroud) 你会怎么做这个PHP switch语句?
另请注意,这些是更小的版本,我需要创建的1将添加更多的值.
版本1:
switch ($p) {
case 'home':
case '':
$current_home = 'current';
break;
case 'users.online':
case 'users.location':
case 'users.featured':
case 'users.new':
case 'users.browse':
case 'users.search':
case 'users.staff':
$current_users = 'current';
break;
case 'forum':
$current_forum = 'current';
break;
}
Run Code Online (Sandbox Code Playgroud)
版本2:
switch ($p) {
case 'home':
$current_home = 'current';
break;
case 'users.online' || 'users.location' || 'users.featured' || 'users.browse' || 'users.search' || 'users.staff':
$current_users = 'current';
break;
case 'forum':
$current_forum = 'current';
break;
}
Run Code Online (Sandbox Code Playgroud)
更新 - 测试结果
我在10,000次迭代中运行了一些速度测试,
Time1:0.0199389457703 //如果语句
Time2:0.0389049446106 …
我基本上想要这样做:
switch($someString.ToLower())
{
"y", "yes" { "You entered Yes." }
default { "You entered No." }
}
Run Code Online (Sandbox Code Playgroud) 哪种方法更好更快:if还是switch?
if(x==1){
echo "hi";
} else if (x==2){
echo "bye";
}
switch(x){
case 1
...
break;
default;
}
Run Code Online (Sandbox Code Playgroud) 我无法弄清楚如何将开关与枚举结合使用.你能告诉我我做错了什么,以及如何解决它?我必须使用枚举来制作一个基本的计算器.
public enum Operator
{
PLUS, MINUS, MULTIPLY, DIVIDE
}
public double Calculate(int left, int right, Operator op)
{
int i = (int) op;
switch(i)
{
case 0:
{
return left + right;
}
case 1:
{
return left - right;
}
case 2:
{
return left * right;
}
case 3:
{
return left / right;
}
default:
{
return 0.0;
}
}
}
Run Code Online (Sandbox Code Playgroud)
最终结果应该是这样的:
Console.WriteLine("The sum of 5 and 5 is " + Calculate(5, 5, PLUS))
Output: The …Run Code Online (Sandbox Code Playgroud) 为什么C#允许这样:
var s = "Nice";
switch (s)
{
case "HI":
break;
const string x = "Nice";
case x:
Console.Write("Y");
break;
}
Run Code Online (Sandbox Code Playgroud)
但不是这个:
var s = "Nice";
switch (s)
{
const string x = "Nice";
case x:
Console.Write("Y");
break;
}
Run Code Online (Sandbox Code Playgroud) switch-statement ×10
c# ×4
php ×3
.net ×1
blade ×1
c ×1
char ×1
curly-braces ×1
enums ×1
if-statement ×1
java ×1
laravel ×1
laravel-5 ×1
performance ×1
powershell ×1