編譯器錯誤 CS1939
更新:2007 年 11 月
錯誤訊息
無法將範圍變數 'name' 當做 out 或 ref 參數傳遞。
範圍變數是查詢運算式中引入的唯讀變數,而且是做為來源序列中之每個後續項目的識別項。因為範圍變數不可以用任何方式進行修改,所以無法透過 ref 或 out 進行傳遞。因此,這兩個作業無效。
若要更正這個錯誤
- 透過傳值 (By Value) 傳遞範圍變數。
範例
下列範例會產生 CS1939:
// cs1939.cs
using System.Linq;
class Test
{
public static void F(ref int i)
{
}
public static void Main()
{
var list = new int[] { 0, 1, 2, 3, 4, 5 };
var q = from x in list
let k = x
select Test.F(ref x); // CS1939
}
}