Erro do Compilador CS0217
Para ser aplicado como um operador de curto-circuito, um operador lógico definido pelo usuário ("operador") deve ter o mesmo tipo de retorno que o tipo dos seus dois parâmetros.
Se você definir um operador para um tipo definido pelo usuário e tentar usá-lo como operador de curto-circuito, ele deverá ter parâmetros e valores retornados do mesmo tipo. Para obter mais informações sobre operadores de curto-circuito, confira operador &&
e operador ||
. Para obter mais informações sobre operadores condicionais ou de curto-circuito definidos pelo usuário, confira a seção Operadores lógicos condicionais definidos pelo usuário da especificação da linguagem C#.
O seguinte exemplo gera o erro CS0217:
// CS0217.cs
using System;
public class MyClass
{
public static bool operator true (MyClass f)
{
return false;
}
public static bool operator false (MyClass f)
{
return false;
}
public static implicit operator int(MyClass x)
{
return 0;
}
public static int operator & (MyClass f1, MyClass f2) // CS0217
// try the following line instead
// public static MyClass operator & (MyClass f1, MyClass f2)
{
return new MyClass();
}
public static void Main()
{
MyClass f = new MyClass();
int i = f && f;
}
}
Comentários do .NET
O .NET é um projeto código aberto. Selecione um link para fornecer comentários: