如何在 C# 中转换 Java 等效迭代器?
How to convert Java Iterator equivalent in c#?
我已经在 java 中下载了 1 个项目,其中我需要将 java 代码的某些部分转换为我的 C# 代码。
这是我在 java 中的代码:
public Map<String, String> queryOptions = new HashMap<String, String>();
Iterator<Map.Entry<String, String>> i = queryOptions.entrySet().iterator();
while (i.hasNext()) {
Map.Entry<String, String> entry = i.next();
if (isArray(entry.getValue())) {
value
.append(entry.getKey())
.append(":")
.append(entry.getValue());
}
else {
value
.append(entry.getKey())
.append(":")
.append("'")
.append(entry.getValue())
.append("'");
}
if (i.hasNext()) {
value.append(",");
}
}
现在我需要将此代码转换为我的 java code.I 知道 IEnumerable for Iterator 是使用过,但我不知道如何在上面的代码中使用 java isArray 函数 so.is c# 中是否也有相同的函数?
Dictionary<string,string> queryOptions = new Dictionary<string,string>();
剩下的怎么转换??
类似的东西:
public Dictionary<String, String> queryOptions = new Dictionary<String, String>();
...
Boolean isFirst = true;
// providing that "value" is StringBuilder
foreach(var pair in queryOptions) {
if (isFirst)
isFirst = false;
else
value.Append(',');
//TODO: what is "isArray" in the context of String?
if (isArray(pair.Value)) {
//TODO: implementing format output will be better
value.Append(pair.Key);
value.Append(':');
value.Append(pair.Value);
}
else {
//TODO: implementing format output will be better
value.Append(pair.Key);
value.Append(':');
value.Append('\'');
value.Append(pair.Value);
value.Append('\'');
}
}
如您所见,您实际上不需要上下文中的 Enumerator
(C# 等同于 Iterartor
)。
更好的方法是使用 Linq,像这样:
// "report" is a final string that is exected
// after value.ToString(); execution
String report = String.Combine(",", queryOptions
.Select(pair => String.Format("{0}:{1}",
pair.Key,
isArray(pair.Value) ? pair.Value : "'" + pair.Value + "'"))
);
但您提供的细节太少无法确定。
我已经在 java 中下载了 1 个项目,其中我需要将 java 代码的某些部分转换为我的 C# 代码。
这是我在 java 中的代码:
public Map<String, String> queryOptions = new HashMap<String, String>();
Iterator<Map.Entry<String, String>> i = queryOptions.entrySet().iterator();
while (i.hasNext()) {
Map.Entry<String, String> entry = i.next();
if (isArray(entry.getValue())) {
value
.append(entry.getKey())
.append(":")
.append(entry.getValue());
}
else {
value
.append(entry.getKey())
.append(":")
.append("'")
.append(entry.getValue())
.append("'");
}
if (i.hasNext()) {
value.append(",");
}
}
现在我需要将此代码转换为我的 java code.I 知道 IEnumerable for Iterator 是使用过,但我不知道如何在上面的代码中使用 java isArray 函数 so.is c# 中是否也有相同的函数?
Dictionary<string,string> queryOptions = new Dictionary<string,string>();
剩下的怎么转换??
类似的东西:
public Dictionary<String, String> queryOptions = new Dictionary<String, String>();
...
Boolean isFirst = true;
// providing that "value" is StringBuilder
foreach(var pair in queryOptions) {
if (isFirst)
isFirst = false;
else
value.Append(',');
//TODO: what is "isArray" in the context of String?
if (isArray(pair.Value)) {
//TODO: implementing format output will be better
value.Append(pair.Key);
value.Append(':');
value.Append(pair.Value);
}
else {
//TODO: implementing format output will be better
value.Append(pair.Key);
value.Append(':');
value.Append('\'');
value.Append(pair.Value);
value.Append('\'');
}
}
如您所见,您实际上不需要上下文中的 Enumerator
(C# 等同于 Iterartor
)。
更好的方法是使用 Linq,像这样:
// "report" is a final string that is exected
// after value.ToString(); execution
String report = String.Combine(",", queryOptions
.Select(pair => String.Format("{0}:{1}",
pair.Key,
isArray(pair.Value) ? pair.Value : "'" + pair.Value + "'"))
);
但您提供的细节太少无法确定。