我将参数作为var
类型传递给函数。它不接受,我如何传递给函数?
例子
var Input = ................
listview1.itemsource = getinput(Input);
public List<answers>getinput(var inp)
{
................
..................
}
这里的功能不接受var
. 我能做些什么?
var只能在同一语句中声明和初始化局部变量时使用;变量不能初始化为 null,也不能初始化为方法组或匿名函数。
MSDN:隐式类型的局部变量
var
用于类型推断,而不是声明动态变量。使用实际输入类型作为inp
.
它不接受第三行,因为您的函数属于该类型void
,并且您尝试将该函数的结果分配给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)
{
................
..................
}