2010-09-16 144 views
1

我將該參數作爲var類型傳遞給該函數。它不接受,我如何傳遞給函數?傳遞參數

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

listview1.itemsource = getinput(Input); 

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

在這裏,函數不接受var。我能做什麼?

回答

6

var只能在局部變量在同一語句中聲明和初始化時才能使用;該變量不能被初始化爲空,或者方法組或匿名函數。

MSDN:Implicitly Typed Local Variables

1

在功能中使用object而不是var。然後將其轉換爲函數內的適當類型。

2

它不接受第三行,因爲您的函數的類型爲void,並且您試圖將該函數的結果指定給listview1.itemsource

+0

對不起,它會返回一個列表 Prabhakaran 2010-09-16 12:12:47

+0

現在你需要更新你的答案........... – 2010-09-16 12:18:45

4

var用於類型推斷,不申報的動態變量。使用實際輸入類型作爲inp的類型。

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

只要C#是強類型語言,編譯器總是知道,什麼是真正的鍵入您的變量屬於:

var Input = .... 

類型....總是已知的。這就是爲什麼你不能聲明

var a; 

,這是EXACLTLY你正在嘗試在

public void getinput(var inp) 
{ 
    ................ 
    .................. 
} 
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?)

變量可以被推斷。參數不能。

1

var僅在JavaScript代碼中作爲變體使用。如果您使用的是var,那麼您可以使用字符串或使用對象。

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


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