對於C#我很新穎,而且練習練習試圖將Y和N的控制檯輸入轉換爲true和false布爾數組(Y = true N = false)。在List.ConvertAll中使用Lambda表達式
我得到的「只分配調用,遞增,遞減,等待新的對象表達式可以用作聲明」的錯誤。有什麼建議麼?
對於C#我很新穎,而且練習練習試圖將Y和N的控制檯輸入轉換爲true和false布爾數組(Y = true N = false)。在List.ConvertAll中使用Lambda表達式
我得到的「只分配調用,遞增,遞減,等待新的對象表達式可以用作聲明」的錯誤。有什麼建議麼?
嘗試:
bool[] tempArray = Console.ReadLine().ToList().ConvertAll(ch => Char.Equals(ch, 'Y')).ToArray();
Lambda表達式不需要在聲明中指定的參數的類型,它們會自動推斷。您還需要將其轉換爲bool
s的列表,並將其轉換爲ToArray
的數組。
這個工程,並且有點簡單。
var array = Console.ReadLine().Select(x => x == 'y');
我相信這是因爲你正在使用一個列表和一個數組。這是我嘗試你的方法時得到的錯誤。
不,那將是IEnumerable的''
因此,保持var並添加ToArray()。但是爲什麼還要打擾IEnumerable的99/100倍才能做到這一點呢?我的意思是它畢竟是一個LINQ問題。 –
ToArray的好處
bool[] tempArray = Console.ReadLine().Select(ch => ch == 'Y').ToArray();
只是好奇,爲什麼一個字節數組? –
@levib也是如此,誤印 –
爲了使無差錯:
var bools = Console.ReadLine().Where(x => Char.ToUpperInvariant(x) == 'Y' || Char.ToUpperInvariant(x) == 'N').Select(x => x == 'Y');
自動推斷的其他東西:泛型類型參數。這裏不需要''或''。 –
是的好點。我編輯瞭解決這些問題的答案。 –