这里面到底发生了什么

本文关键字:发生了 什么 这里 | 更新日期: 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 == intcast是必需的:

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();
  ...

注:请格式化你的代码,因为它很难阅读