2015-08-28 59 views
-4

我已經下載了1個項目,其中我需要將java代碼的一部分轉換爲我的c#代碼。如何轉換C#中的Java Iterator等價物?

這是我在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的迭代使用,但我不知道如何在上面代碼java isArray函數也使用so.is在c#中也有相同的函數嗎?

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

如何轉換其餘?

+0

澄清的事情:你想從Java轉換爲C#? – Paul

+0

是的,我想從java轉換到c# –

+0

Downvoter請給我downvoting的原因? –

回答

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

但您提供太少detailes把它寫是肯定的。