1

私は次の方法を持っています

/// <summary>
    /// Replaces SemiColons with commas because SMTP client does not accept semi colons
    /// </summary>
    /// <param name="emailAddresses"></param>
    public static List<string> ReplaceSemiColon(List<string> emailAddresses) // Note only one string in the list...
    {         
        foreach (string email in emailAddresses)
        {
            email.Replace(";", ",");
        }

        //emailAddresses.Select(x => x.Replace(";", ","));  // Not working either


        return emailAddresses;
    }

ただし、電子メール文字列は「;」を置き換えていません。とともに "、"。私は何が欠けていますか?

4

5 に答える 5

4

As others have already mentioned that strings are immutable (string.Replace would return a new string, it will not modify the existing one) and you can't modify the list inside a foreach loop. You can either use a for loop to modify an existing list or use LINQ to create a new list and assign it back to existing one. Like:

emailAddresses = emailAddresses.Select(r => r.Replace(";", ",")).ToList();

Remember to include using System.Linq;

于 2013-09-27T14:37:41.570 に答える
3

文字列は不変であるため、別の文字列が返されます。試す

for(int i = 0; i < emailAddress.Count; i++)
{
   emailAddress[i] = emailAddress[i].Replace(";", ",");
}

反復変数を変更しようとしているため、ここでは foreach ループはコンパイルされません。この問題に遭遇するでしょう。

于 2013-09-27T14:20:11.173 に答える
0

次のようなものを使用する必要があります: var tmpList = new List(); 変更した各メール アドレスを tmplist に追加し、完了したら TmpList を返します。.NET 文字列は不変であるため、コードが機能しません。

于 2013-09-27T14:21:20.800 に答える