将数组中的 case 项切换为 'create' 个循环 | C#
Switch case items in an array to 'create' a cycle | c#
我希望能够通过索引在数组中的 "active" 对象之间切换。为此,我需要能够 "cycle" 通过固定长度为 3 的对象数组。
当活动对象的第一项和调用函数switchObject()时,我希望能够将活动对象更改为数组中的第二项。这可能吗?
Inventory inventory = new Inventory(); /* has getObject() */
internal Object activeObject;
public void switchObject()
{
switch (index)
{
/* If active object index is 0, switch active object index to index 1 */
case 0:
index = 1;
activeObject = inventory.getObject(index);
/* If active object index is 1, switch active object index to index 2 */
case 1:
index = 2;
activeObject = inventory.getObject(index);
/* If active object index is 2, switch active object index to index 0 */
case 2:
index = 0;
activeObject = inventory.getObject(index);
}
}
理想的行为是循环数组,例如(其中 -> 是 switch())项目 1 -> 项目 2 -> 项目 3 -> 项目 1 -> 项目 2 -> 项目 3 -> 项目 1 ....
此代码在 VS2017 中抛出错误,因为“控件无法从一个案例标签中掉落('case ;')
此外,有没有一种方法可以利用异常(可能是自定义异常?)来检查是否实际上有三个对象可用于切换?
谢谢!
有什么方法可以让它工作吗?
每个 case
末尾缺少 break;
语句。您可以添加一个 default
案例,如果索引不在 1-3 之间,您可以使用它来抛出异常。
switch (index)
{
/* If active object index is 0, switch active object index to index 1 */
case 0:
index = 1;
activeObject = inventory.getObject(index);
break;
/* If active object index is 1, switch active object index to index 2 */
case 1:
index = 2;
activeObject = inventory.getObject(index);
break;
/* If active object index is 2, switch active object index to index 0 */
case 2:
index = 0;
activeObject = inventory.getObject(index);
break;
default:
throw new Exception("Index can only be 1, 2 or 3");
}
注意:default
部分不需要 break
语句,因为抛出的异常中断到 switch
流程。
希望对您有所帮助!
我希望能够通过索引在数组中的 "active" 对象之间切换。为此,我需要能够 "cycle" 通过固定长度为 3 的对象数组。
当活动对象的第一项和调用函数switchObject()时,我希望能够将活动对象更改为数组中的第二项。这可能吗?
Inventory inventory = new Inventory(); /* has getObject() */
internal Object activeObject;
public void switchObject()
{
switch (index)
{
/* If active object index is 0, switch active object index to index 1 */
case 0:
index = 1;
activeObject = inventory.getObject(index);
/* If active object index is 1, switch active object index to index 2 */
case 1:
index = 2;
activeObject = inventory.getObject(index);
/* If active object index is 2, switch active object index to index 0 */
case 2:
index = 0;
activeObject = inventory.getObject(index);
}
}
理想的行为是循环数组,例如(其中 -> 是 switch())项目 1 -> 项目 2 -> 项目 3 -> 项目 1 -> 项目 2 -> 项目 3 -> 项目 1 ....
此代码在 VS2017 中抛出错误,因为“控件无法从一个案例标签中掉落('case ;')
此外,有没有一种方法可以利用异常(可能是自定义异常?)来检查是否实际上有三个对象可用于切换?
谢谢!
有什么方法可以让它工作吗?
每个 case
末尾缺少 break;
语句。您可以添加一个 default
案例,如果索引不在 1-3 之间,您可以使用它来抛出异常。
switch (index)
{
/* If active object index is 0, switch active object index to index 1 */
case 0:
index = 1;
activeObject = inventory.getObject(index);
break;
/* If active object index is 1, switch active object index to index 2 */
case 1:
index = 2;
activeObject = inventory.getObject(index);
break;
/* If active object index is 2, switch active object index to index 0 */
case 2:
index = 0;
activeObject = inventory.getObject(index);
break;
default:
throw new Exception("Index can only be 1, 2 or 3");
}
注意:default
部分不需要 break
语句,因为抛出的异常中断到 switch
流程。
希望对您有所帮助!