Blazorアプリケーションのコンパイル時に「CS1662: デリゲート戻り値の型に暗黙的に変換できない戻り値の型がブロック内にあるため、ラムダ式 を目的のデリゲート型に変換できません」エラーが発生する

Blazorアプリケーションのコンパイル時に「CS1662: デリゲート戻り値の型に暗黙的に変換できない戻り値の型がブロック内にあるため、ラムダ式 を目的のデリゲート型に変換できません」 エラーが発生する現象について紹介します。

現象の確認

Blazorアプリケーションプロジェクトをビルドすると、下記のビルドエラーが発生します。
エラーメッセージ
CS1662: デリゲート戻り値の型に暗黙的に変換できない戻り値の型がブロック内にあるため、ラムダ式 を目的のデリゲート型に変換できません

原因

このエラーが発生する原因はいくつかありますが、特定の条件が重なると、CS0103 のエラーの場合にもCS1662エラーが発生する場合があります。

razorコンポーネントのファイルでスコープ外の変数やオブジェクト、または、宣言されていない変数やオブジェクトを参照した場合、通常は、下記のCS0103エラーが発生します。
エラーメッセージ
CS0103: 現在のコンテキストに '(変数名)' という名前は存在しません


エラーの発生する.razorファイル
@page "/"
<h3>index</h3>

@code {

}
<input type="text" ID="TextBox2" value="@myvalue.x"/>

上記のコードでは、myvalue 変数が宣言されていない、またはスコープ外のため、CS0103が発生しますが、いくつかの条件が重なると、CS0103エラーではなく、CS1662エラーになる場合があります。

対処法

razorファイル内に、スコープ外の変数がないか、宣言されていない変数がないかを確認し、あれば修正した後、再コンパイルしコンパイルエラーが解消されるかを確認します。

著者
iPentecのメインプログラマー
C#, ASP.NET の開発がメイン、少し前まではDelphiを愛用
最終更新日: 2022-06-01
作成日: 2022-06-01
iPentec all rights reserverd.