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()
,它不起作用.此方法之前和之后的值相同.为什么?
replace方法返回一个新的字符串对象,它不会修改现有的字符串.以下陈述应该有效:
a = a.Replace("=", "r");
Run Code Online (Sandbox Code Playgroud)
有用.它只是没有你想的那样:它不会编辑现有的 string
:它会创建一个新的字符串.尝试:
a = a.Replace("=", "r");
a = a.Replace("+", "t");
Run Code Online (Sandbox Code Playgroud)
这是因为string
s是不可变的:它们一旦创建就不会改变(至少,如果你看起来不是这样 - 有一些例外,比如内部的StringBuilder
,但那些是你不应该看到的实现细节)