我将参数作为var
类型传递给函数。它不接受,我如何传递给函数?
实施例
var Input = ................
listview1.itemsource = getinput(Input);
public List<answers>getinput(var inp)
{
................
..................
}
此处该功能不接受var
。我该怎么办?
答案 0 :(得分:6)
var 只能在同一语句中声明和初始化局部变量时使用;该变量不能初始化为null,也不能初始化为方法组或匿名函数。
答案 1 :(得分:4)
var
用于类型推断,而不是声明动态变量。使用实际输入类型作为inp
的类型。
答案 2 :(得分:2)
它不接受第三行,因为您的函数属于void
类型,并且您尝试将该函数的结果分配给listview1.itemsource
。
答案 3 :(得分:2)
正如其他人所说,你混合了隐式类型变量(类型推断)和一个显式类型的函数签名。
你应该拥有的是:
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?)
可以推断出变量。参数不能。
答案 4 :(得分:1)
在函数中使用object
而不是var
。然后将其转换为函数内的相应类型。
答案 5 :(得分:1)
public void getinput(object inp)
{
................
..................
}
只要C#是强类型语言,编译器就会知道你的变量属于哪种真实类型:
var Input = ....
....的类型始终是已知的。这就是你无法宣布
的原因var a;
这是你在
中想要做的事情public void getinput(var inp)
{
................
..................
}
答案 6 :(得分:1)
var
仅在JavaScript代码中用作变体。如果您使用var
,则可以使用字符串或使用对象。
public void getinput(object inp)
{
................
..................
}
public void getinput(string inp)
{
................
..................
}