跳到主内容

no_duplicate_case_values

case 子句 ('{0}') 的值与较早的 case 子句 ('{1}') 的值相等。

描述

#

当同一 switch 语句中有两个或多个 case 子句具有相同的值时,分析器会产生此诊断。

第一个 case 子句之后的任何同值 case 子句都无法执行,因此存在重复的 case 子句会造成误导。

此诊断通常是由于输入错误或常量值发生变化所致。

示例

#

以下代码会产生此诊断,因为有两个 case 子句具有相同的值 (1)

dart
// @dart = 2.14
void f(int v) {
  switch (v) {
    case 1:
      break;
    case 1:
      break;
  }
}

常见修复方法

#

如果其中一个子句应该具有不同的值,则更改该子句的值

dart
void f(int v) {
  switch (v) {
    case 1:
      break;
    case 2:
      break;
  }
}

如果值正确,则将语句合并到一个子句中

dart
void f(int v) {
  switch (v) {
    case 1:
      break;
  }
}