这里面到底发生了什么
本文关键字:发生了 什么 这里 | 更新日期: 2023-09-27 17:49:38
下面代码中究竟发生了什么内部操作
public string s= "vinaysagarreddy";
public int n=1234;
public void RString()
{
string rs="vinaysagaarreddy";
for(int i=s.Length-1;i>=0;i--)
rs[i]=rs[i]+s[i];
}
ad rs=rs+s[i]
工作,但
rs[i]=rs[i]+s[i];
表示我们不能隐式地将int转换为string,因为它们在这里被视为字符数组。
我需要这两个语句的内部操作
rs=rs+s[i]
rs[i]=rs[i]+s[i];
您正在尝试更改String
,这是不可变的另一个问题是Char + Char == int
和cast是必需的:
public void RString() {
string rs = "vinaysagaarreddy";
// <- Error! rs is a string and so immutable; "rs[i] =" is not allowed
for(int i = s.Length - 1;i >= 0; i--)
rs[i] = rs[i] + s[i]; // Char + Char == int; so "rs[i] + s[i]" is int
...
使用StringBuilder
创建/更改字符串
public void RString() {
StringBuilder sb = new StringBuilder("vinaysagaarreddy");
// sb is a StringBuilder : OK to change
for(int i = s.Length - 1;i >= 0; i--)
sb[i] = (Char) (sb[i] + s[i]); // <- Char + Char == int; cast required
String rs = sb.ToString();
...
注:请格式化你的代码,因为它很难阅读