2022/12/11
[C#] 如何修正錯誤 CS1738 "named argument specifications must appear after all fixed arguments have been specified" 問題
markdown
### 問題
最近遇到客戶拿到原始碼在編譯過程出現 "CS1738 named argument specifications must appear after all fixed arguments have been specified" 錯誤
中文錯誤訊息 "CS1738 必須在所在固定引數皆已指定之後,具名引數規格才可出現。請使用語言版本 7.2 或更高的版本,以允許非後置的具名引數。"
- 開發環境: 使用 VS2022
- 客戶環境: 使用 VS2017
相同的程式,在 VS2022 下編譯沒有問題,而在 VS2017 卻遇到無法正確編譯。
程式大致如下:
```
context.MapRoute(
name: "MyRouteName",
url: "MyArea/News/{type}",
new { controller = "News", action = "TypeList" }
);
```
### 解決方法
1. 依照參數位置給予對應值, 不加任何具名引數 (把具名引數 `name:` 及 `url:` 都拿掉)
2. 把所有具名引數都加上去, 即第三個參數前須加上具名引數 `defaults:`
3. 更新 Visual Studio 到新版本 (需支援 C# 7.2 以上的版本)
### 相關連結
- [Named and Optional Arguments (C# Programming Guide)](https://learn.microsoft.com/en-us/dotnet/csharp/programming-guide/classes-and-structs/named-and-optional-arguments?WT.mc_id=DT-MVP-5002629)
- [How to fix Error CS1738 Named argument specifications must appear after all fixed arguments have been specified](https://stackoverflow.com/questions/57062106/how-to-fix-error-cs1738-named-argument-specifications-must-appear-after-all-fixe)
沒有留言:
張貼留言