Ich lese, "C# in Kürze" und ich kam zu Advanced C# Funktionen erstes Thema: Delegierten.Kompilierfehler: Die Verwendung des generischen Typs erfordert N-Typ-Argumente
Dieser einfache Code funktioniert
using System;
namespace prueba
{
class Program
{
public delegate int Transformer(int x);
static void Main(string[] args)
{
Transformer t = Square;
t += Cube;
int result = t(3);
Transform(5, Square);
Console.WriteLine(result);
Console.Read();
}
static int Square(int x) => x * x;
static int Cube(int x) => x * x * x;
public static void Transform(int x, Transformer t){
t(x);
}
}
} //prints => 27
Wenn ich versuche, Generika zu verwenden, mit diesem Code
using System;
namespace prueba
{
class Program
{
public delegate int Transformer<T>(T arg);
static void Main(string[] args)
{
Transformer t = Square; // Compilation Error at this lane
t += Cube;
int result = t(3);
Transform(5, Square);
Console.WriteLine(result);
Console.Read();
}
static int Square(int x)
{
Console.WriteLine(x);
return 0;
}
static int Cube(int x) => x * x * x;
public static void Transform<T>(T x, Transformer<T> t){
t(x);
}
}
}
ich wirklich bin neu und Ich verstehe nicht, was bedeutet, dass ich 1 Typ-Argument benötige, wenn das einzige, was ich getan habe, ist, den Typ Delegat für einen generischen Typ (T) zu ändern. Könnte mir jemand helfen? Diese
Sie versuchen, den generischen Typ 'Transformator verwenden' ohne Angabe 'T'. Dies ist nicht erlaubt, wenn eine Variable wie diese deklariert wird. Sie müssen explizit sein und sagen 'Transformer = Square;' –
oh, ich sehe, danke, ich dachte, es funktioniert wie dynamische var, aber ich war falsch, wirklich danke – Ferus7