1

我将参数作为var类型传递给函数。它不接受,我如何传递给函数?

例子

var Input = ................

listview1.itemsource = getinput(Input);

public List<answers>getinput(var inp)
{
................
..................
}

这里的功能不接受var. 我能做些什么?

4

7 回答 7

6

var只能在同一语句中声明和初始化局部变量时使用;变量不能初始化为 null,也不能初始化为方法组或匿名函数。

MSDN:隐式类型的局部变量

于 2010-09-16T12:07:22.963 回答
4

var用于类型推断,而不是声明动态变量。使用实际输入类型作为inp.

于 2010-09-16T12:07:50.763 回答
2

它不接受第三行,因为您的函数属于该类型void,并且您尝试将该函数的结果分配给listview1.itemsource.

于 2010-09-16T12:07:04.790 回答
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?)

可以推断变量。参数不能。

于 2010-09-16T12:22:21.727 回答
1

object在函数中使用而不是var. 然后将其转换为函数内的适当类型。

于 2010-09-16T12:06:44.757 回答
1
public void getinput(object inp)
{
................
..................
}

一旦 C# 是强类型语言,编译器总是知道你的变量属于什么真实类型:

var Input = ....

.... 的类型总是已知的。这就是为什么你不能声明

var a;

这正是你想要做的

public void getinput(var inp)
{
    ................
    ..................
}
于 2010-09-16T12:17:05.483 回答
1

var只是在 JavaScript 代码中用作变体。如果您正在使用,var那么您可以使用字符串或使用对象。

public void getinput(object inp) 
{ 
    ................ 
    .................. 
} 


public void getinput(string inp) 
{ 
    ................ 
    .................. 
} 
于 2010-09-16T12:23:28.603 回答