Erro do compilador CS0217
Para ser aplicável como operador de curto-circuito, um operador lógico definido pelo utilizador («operador») deve ter o mesmo tipo de retorno que o tipo dos seus 2 parâmetros.
Se você definir um operador para um tipo definido pelo usuário e, em seguida, tentar usar o operador como um operador de curto-circuito, o operador definido pelo usuário deve ter parâmetros e valores de retorno do mesmo tipo. Para obter mais informações sobre operadores de curto-circuito, consulte &&
operador e ||
operador. Para obter mais informações sobre operadores de curto-circuito ou condicionais definidos pelo usuário, consulte a seção Operadores lógicos condicionais definidos pelo usuário da especificação da linguagem C#.
O exemplo a seguir gera 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: