我有一种情况,我必须做这样的事情
for (int i = 0; i < list.size; i++) //Master for loop
{
//I need a control statement here to control list1 i.e. only if statement
if (time == list1.get(someInteger))
{
//do something
}
else
{
//do something else
}
}
Run Code Online (Sandbox Code Playgroud)
但每个"如果"应该跟着"其他",我似乎不明白如何去做.香港专业教育学院尝试过,但无济于事.对我来说,重要的是同时执行if和else,但只有"if"的控制语句.
那可能吗?
我现在正在研究C#,遇到以下情况,有什么更好的实践,重复代码如"EX 1"或使用goto"EX 2"这样的语句?我不想要个人意见.
// EX 1:
switch (a)
{
case 3:
b = 7;
c = 3; // duplicate code <-|
break; // |
case 4: // |
c = 3; // duplicate code --|
break;
default:
b = 2;
c = 4;
break;
}
// EX 2:
switch (a)
{
case 3:
b = 7;
goto case 4; // not duplicate code and use goto statement
case 4:
c = 3;
break;
default:
b = 2;
c …Run Code Online (Sandbox Code Playgroud) 我看过类似的问题和答案,但我仍然无法在代码中看到问题.我有一个switch语句,这里是:
switch (header)
{
case Headers.Queue:
{
int id = pr.ReadInt32();
string fileName = pr.ReadString();
long length = pr.ReadInt64();
TransferQueue queue = TransferQueue.CreateDownloadQueue(this, id, Path.Combine(downloadDirectory,
Path.GetFileName(fileName)), length);
_transfers.Add(id, queue);
if (Queued != null)
{
Queued(this, queue);
}
}
break;
case Headers.Start:
{
int id = pr.ReadInt32();
if (_transfers.ContainsKey(id))
{
_transfers[id].Start();
}
}
break;
case Headers.Chunk:
{
int id = pr.ReadInt32();
long index = pr.ReadInt64();
int size = pr.ReadInt32();
byte[] buffer = pr.ReadBytes(size);
TransferQueue queue = _transfers[id];
queue.Write(buffer, index);
queue.Progress = …Run Code Online (Sandbox Code Playgroud) 使用以下代码:
case "GETSITES":
case "SITESETUP":
MessageBox.Show("Help! I am suffering from the Air-Conditioned Nightmare!!!");
// ...
Run Code Online (Sandbox Code Playgroud)
将MessageBox.Show被执行或者开关值为"GETSITES"还是"SITESETUP"?
或者仅当开关值是"SITESETUP"?
既然"GETSITES"没有休息,我想是的,但我不确定.
UPDATE
我想我应该把我的问题写成:
这两个代码片段在语义上是等价的吗?
片段1
case 0:
case 1:
// bla bla bla;
break;
Run Code Online (Sandbox Code Playgroud)片段2(伪代码)
case 0, 1:
// bla bla bla;
break;
Run Code Online (Sandbox Code Playgroud)