我只想知道在C#中是否存在foreach oneliner,就像ifellen (exp) ? then : else
一樣。C#中是否有可用的foreach oneliner?
11
A
回答
28
如果你正在處理數組那麼你可以使用內置的靜態ForEach
方法:
Array.ForEach(yourArray, x => Console.WriteLine(x));
如果你正在處理一個List<T>
那麼你可以使用內置的ForEach
實例方法:
yourList.ForEach(x => Console.WriteLine(x));
沒有什麼內置那將努力反對任意IEnumerable<T>
序列的,但它很容易,如果你覺得你需要它推出自己的擴展方法:
yourSequence.ForEach(x => Console.WriteLine(x));
// ...
public static class EnumerableExtensions
{
public static void ForEach<T>(this IEnumerable<T> source, Action<T> action)
{
if (source == null) throw new ArgumentNullException("source");
if (action == null) throw new ArgumentNullException("action");
foreach (T item in source)
{
action(item);
}
}
}
5
3
foreach
線襯墊可以與LINQ擴展方法來實現。比如:
代替:
var result = new List<string>();
foreach (var item in someCollection)
{
result.Add(item.Title);
}
,你可以:
var result = someCollection.Select(x => x.Title).ToList();
2
當然,你可以使用類似List<>::ForEach
:
List<String> s = new List<string>();
s.Add("These");
s.Add("Is");
s.Add("Some");
s.Add("Data");
s.ForEach(_string => Console.WriteLine(_string));
0
的主要區別,如果與運營商之間?是,如果是「?」產生一個表達式。即你不能做到這一點:
var _ = (exp) ? then : else; // ok
但不是這樣的:
var _ = if (exp) { then; } else { else; }; // error
所以,如果你正在尋找類似的foreach表達有沒有.NET類型可除空白自然恢復,但有沒有void類型的值,所以你同樣可以這樣寫:
foreach (var item in collection) process(item);
在許多功能性語言單位類型是用來代替虛空當中是一個只有一個值類型。您可以在.NET中模擬這種創造你自己的foreach表達:
class Unit
{
public override bool Equals(object obj)
{
return true;
}
public override int GetHashCode()
{
return 0;
}
}
public static class EnumerableEx
{
public static Unit ForEach<TSource>(
this IEnumerable<TSource> source,
Action<TSource> action)
{
foreach (var item in source)
{
action(item);
}
return new Unit();
}
}
但是幾乎沒有任何存在的用例這樣的表達式。
相關問題
- 1. 是否有可能在單個List中有Thread.Sleep()<T> ForEach?
- 2. 是否可以在PigLatin中創建沒有COGROUP的嵌套FOREACH?
- 3. 是否有可能在codeigniter中查看foreach的索引?
- 4. 是否有可能?(C++)
- 5. 是否在foreach中使用C#中的BlockingCollection <T>?
- 6. 在Python 3中是否有'foreach'函數?
- 7. 在nightmarejs中是否有foreach方法?
- 8. applescript oneliner
- 9. 是否有可能#include在C++類中?
- 10. 是否有可能在c#中「鏈」EventHandlers?
- 11. 是否有可能使用Linq來替換這個Foreach循環
- 12. 是否有可能用Linq替換這個foreach循環?
- 13. 是否有可能使用boost foreach迭代多個容器?
- 14. 是否有可能在foreach中獲得會話值?
- 15. 敲除檢測是否有任何在foreach中可見
- 16. 是否有可能在foreach循環中填充數組
- 17. 是否有可能在調試時「看到」C#foreach循環的迭代集合?
- 18. 是否有可能檢測到Java中是否有類可用?
- 19. Oneliner C打印參數
- 20. 是否有可能使用jQuery的.when()與forEach循環的Ajax調用?
- 21. 是否有可用的
- 22. 是否有可用的AS3
- 23. 我可以在OneLiner中轉換這兩個LINQ語句嗎(C#)
- 24. Ruby oneliner檢查文件中是否存在多行
- 25. C#中是否有任何可立即使用的DynamicObject?
- 26. 是否有可能在C++中使用.NET版本的TeeChart?
- 27. 是否有可能使用WPF在c#中更改FormattedText的TextOptions?
- 28. C++中是否有可用的語義比較工具?
- 29. 是否有可能在C#中使用BDE創建的表格?
- 30. 是否可以使用$ key在foreach中創建變量?
奇怪的是,他們沒有內置這種東西。我猜如果有人會遵循Python模式,可以使用`Select`來構建一個新的枚舉? – Domi 2016-10-29 13:21:39