c#中与Java枚举类型等价的是什么?请参阅下面的代码
本文关键字:是什么 请参阅 代码 Java 中与 枚举 类型 | 更新日期: 2023-09-27 18:13:42
public Enumeration getLogEntries(String header)
{
return log != null ? ((Vector)log.get(header)).elements() : null;
//log is a hashtable
//
}
这是我在c#中尝试过的,但它不完整:
public IEnumerator getLogEntries(string header)
{
return log.Keys.GetEnumerator(); //Something is missing here!
//log is Dictionary<string,List<string>>()
}
不返回IEnumerator
,返回IEnumerable
:
public IEnumerable<string> GetLogEntries(string header)
{
return log != null && log.ContainsKey(header) ? log[header] : Enumerable.Empty<string>();
}
然后你遍历它:
foreach(string entries in GetLogEntries("someKey"))
{
//do something
}
这也具有强类型的优点。
还存在IList<string>
和ICollection<string>
。这取决于你想用你的数据做什么,如果你计划.Add
到他们。
Enumerable
静态类可以在System.Linq
命名空间中找到,如果你以前从未听说过linq,那么linq查询表达式(c#编程指南)是一本很好的读物。对我来说,LINQ改变了我看待序列的方式。
IEnumerable(大致)相当于Java中的Iterable
,类似地,IEnumerator
相当于Iterator
。
下面是你的方法的一个等效的c#版本:
public IEnumerable<string> GetLogEntries(string header)
{
if (log != null && log.ContainsKey(header))
{
return log[header];
}
return null;
}
顺便说一下,c#使用Pascal大小写作为方法名,而不是Java的驼峰大小写。