Przeczytaj w języku angielskim

Udostępnij za pośrednictwem


Błąd kompilatora CS0428

Nie można przekonwertować grupy metod "Identyfikator" na typ "type" bez delegowania. Czy zamierzasz wywołać metodę?

Ten błąd występuje podczas konwertowania grupy metod na typ niedelegujący lub próby wywołania metody bez użycia nawiasów.

Przykład

Poniższy przykład generuje CS0428:

// CS0428.cs  
namespace ConsoleApplication1  
{  
    class Program  
    {  
        delegate int Del1();  
        delegate object Del2();  
  
        static void Main(string[] args)  
        {  
            ExampleClass ec = new ExampleClass();  
  
            // The following assignment statement causes compiler error CS0428.  
            // It attempts to assign the address of Method1 to an integer variable.
            // You can only assign the address to an appropriate delegate type.
            int i = ec.Method1;  
  
            // Del1 is a delegate type that is appropriate for a method like
            // Method1 that returns an int. The following assignment statement  
            // does not cause an error.  
            Del1 d1 = ec.Method1;  
  
            // You can invoke Method1 and assign the int that is returned to
            // integer variable i.  
            i = ec.Method1();  
  
            // The following assignment statement causes compiler error CS0428.  
            // It attempts to assign the address of Method2 to an instance of
            // ExampleClass. You can only assign the address to a delegate type.
            ec = ExampleClass.Method2;
  
            // Del2 is a delegate type that is appropriate for a method like
            // Method2 that returns an instance of a class. The following assignment  
            // statement does not cause an error.  
            Del2 d2 = ExampleClass.Method2;  
  
            // Similarly, you can invoke Method2 and assign the result returned to ec.  
            ec = ExampleClass.Method2();  
        }  
    }  
  
    public class ExampleClass  
    {  
        public int Method1() { return 1; }  
        public static ExampleClass Method2() { return null; }  
    }  
}