跳到主內容

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;
  }
}