方法string.Replace()不起作用

Jey*_*hun 2 c# string random

    public string Generate()
    {
        RandomNumberGenerator rdng = new RNGCryptoServiceProvider();
        byte[] bytes = new byte[40];

        rdng.GetBytes(bytes);

        string a = Convert.ToBase64String(bytes); 

        a.Replace("=", "r");
        a.Replace("+", "t");

        return a;
    }

a=43TvtRvrTrt54g5gtbrTTBR45iu+zqbB03gXej== ;
Run Code Online (Sandbox Code Playgroud)

之后a.Replace()再次:

a=43TvtRvrTrt54g5gtbrTTBR45iu+zqbB03gXej== ;
Run Code Online (Sandbox Code Playgroud)

我想在我的C#项目中生成独特的价值.一切都很棒.但是当我想打电话时string.Replace(),它不起作用.此方法之前和之后的值相同.为什么?

kri*_*sku 9

replace方法返回一个新的字符串对象,它不会修改现有的字符串.以下陈述应该有效:

a = a.Replace("=", "r");
Run Code Online (Sandbox Code Playgroud)


Mar*_*ell 6

有用.它只是没有你想的那样:它不会编辑现有的 string:它会创建一个新的字符串.尝试:

    a = a.Replace("=", "r");
    a = a.Replace("+", "t");
Run Code Online (Sandbox Code Playgroud)

这是因为strings是不可变的:它们一旦创建就不会改变(至少,如果你看起来不是这样 - 有一些例外,比如内部的StringBuilder,但那些是你不应该看到的实现细节)