私はC#の要点を読んでいます。コンパイルエラー:ジェネリック型を使用するには、N型の引数が必要です
この単純なコードは
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
ワークス私はこのコード
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);
}
}
}
を使用してジェネリックを使用しようとすると、私はコンパイルできません:
を私はこれまで、本当に新たなんだと私は1つの型の引数を必要とすることを意味しない、私がしたことは、汎用型(T)のint型の代理人を変更することです。誰か助けてくれますか?
Transformer<int> t = Square;
を一方、あなたはここで、一般的なメソッドを使用する必要があることを確信している:
'指定せずに 'T':コードの
あなたのラインは =正方形;' –
T
使用したいを指定する必要があります。これは、このような変数を宣言するときには許可されません。あなたは明示的にし、状態 '変圧器ああ、私は、あなたが動的なvarのように動作すると思ったが、間違っていた、本当にありがとう – Ferus7