【问题标题】:How to convert Java Iterator equivalent in c#? [closed]如何在 c# 中转换等效的 Java Iterator? [关闭]
【发布时间】:2015-08-28 10:21:06
【问题描述】:

我已经下载了 1 个 java 项目,我需要将部分 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 代码。我知道 IEnumerable 用于 Iterator 已使用,但我不知道如何以及在上面的代码 java isArray函数也用了so.c#中也有同样的函数吗?

Dictionary<string,string> queryOptions = new Dictionary<string,string>();

剩下的怎么转换??

【问题讨论】:

  • 澄清一下:你想从java转换成c#?
  • 是的,我想从 java 转换为 c#
  • 投反对票的请给我投反对票的理由?
  • 我没有投反对票,但我应该投反对票的原因有几个:这个问题的英语很糟糕,真的很难理解,还有很多其他问题和例子关于这个主题,它非常广泛,最后但并非最不重要:SO 不是编码服务,展示你所拥有的以及问题所在

标签: java c# iterator ienumerable equivalent


【解决方案1】:

类似的东西:

  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 + "'"))
  );

但是您提供的细节太少无法确定。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-12-07
    相关资源
    最近更新 更多