Chyba kompilátoru CS0837
Prvním operandem operátoru is nebo as nemusí být výraz lambda, anonymní metoda nebo skupina metod.
Výrazy lambda, anonymní metody a skupiny metod nemusí být použity na levé straně je nebo jako.
Pokud chyba zahrnuje operátor, mějte na
is
paměti, žeis
vezme hodnotu a typ a řekne vám, zda je možné tuto hodnotu do daného typu vytvořit pomocí odkazu, boxingu nebo rozbalení převodu. Vzhledem k tomu, že lambda nejsou hodnoty a nemají žádný odkaz, boxing nebo rozbalení převodů, lambda nejsou kandidáty prois
.Pokud kód zneužije
as
, oprava ji pravděpodobně změní na přetypování.
Následující příklad vygeneruje CS0837:
// cs0837.cs
namespace TestNamespace
{
public delegate void Del();
class Test
{
static int Main()
{
bool b1 = (() => { }) is Del; // CS0837
bool b2 = delegate() { } is Del;// CS0837
Del d1 = () => { } as Del; // CS0837
Del d2 = delegate() { } as Del; // CS0837
return 1;
}
}
}
Zpětná vazba k produktu .NET
.NET je open source projekt. Vyberte odkaz pro poskytnutí zpětné vazby: