パラメータを型として関数に渡していますvar
。受け入れていません。関数に渡すにはどうすればよいですか?
例
var Input = ................
listview1.itemsource = getinput(Input);
public List<answers>getinput(var inp)
{
................
..................
}
ここでは、関数はを受け入れていませんvar
。私に何ができる?
varは、ローカル変数が同じステートメントで宣言および初期化されている場合にのみ使用できます。変数を null に初期化することも、メソッド グループまたは無名関数に初期化することもできません。
MSDN :暗黙的に型指定されたローカル変数
var
動的変数を宣言するためではなく、型の推論に使用されます。の型として実際の入力型を使用しinp
ます。
void
関数の型が であり、その関数の結果を に代入しようとしているため、3 行目は受け入れられませんlistview1.itemsource
。
他の人が言ったように、暗黙的に型指定された変数 (型推論) と明示的に型指定された関数シグネチャを混在させています。
あなたが持っているべきものは次のとおりです。
var Input = txtQuestion.text; // Implicitly typed variable of type string
listview1.itemsource = getinput(Input);
// Strongly typed method taking string, returning List<answers>
public List<answers>getinput(string question)
{
var result = new List<answers>();
result.Add(answer);
return result;
}
これがあなたのコードと完全に一致しない場合は申し訳ありませんが、あなたが求めているものを示すはずです.
var キーワードは、代入演算子の右側から変数の型を推測するために使用されます。メソッドのシグネチャには代入演算子がないため、推論は行われません。さらに、基本クラスから派生した任意の数の型をいつでも渡すことができます。これにより、コンパイラが引数の正しい型を判断することが難しくなります。(DbReader、SqlDbReader、または IDbReader のことですか?)
変数は推測できます。パラメータはできません。
object
の代わりに関数で使用しvar
ます。次に、関数内で適切な型にキャストします。
public void getinput(object inp)
{
................
..................
}
C# が厳密に型指定された言語であるとすぐに、コンパイラは、変数が属している実際の型を常に認識します。
var Input = ....
.... の型は常に知られています。だから公表できない
var a;
これはまさにあなたがやろうとしていることです
public void getinput(var inp)
{
................
..................
}
var
バリアントとして JavaScript コードで使用されているだけです。使用している場合はvar
、文字列またはオブジェクトを使用できます。
public void getinput(object inp)
{
................
..................
}
public void getinput(string inp)
{
................
..................
}