Błąd kompilatora CS0217
Aby mieć zastosowanie jako operator zwariowania, operator logiczny zdefiniowany przez użytkownika ("operator") musi mieć ten sam typ zwracany co typ jego 2 parametrów.
Jeśli zdefiniujesz operator dla typu zdefiniowanego przez użytkownika, a następnie spróbujesz użyć operatora jako operatora zwarć, operator zdefiniowany przez użytkownika musi mieć parametry i zwracane wartości tego samego typu. Aby uzyskać więcej informacji na temat operatorów zwarć, zobacz &&
operator i ||
operator. Aby uzyskać więcej informacji na temat zwarć zdefiniowanych przez użytkownika lub operatorów warunkowych, zobacz sekcję Operatory warunkowe zdefiniowane przez użytkownika specyfikacji języka C#.
Poniższy przykład generuje 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;
}
}
Opinia o produkcie .NET
.NET to projekt typu open source. Wybierz link, aby przekazać opinię: