我在字符串方面有一个疑问。 如何访问字符串的内存?
字符串是引用类型还是值类型?
1) 如果它是引用类型,那么执行以下代码:
List<String> strLst = new List<string>() { "abc","def","12"};
strLst.ForEach(delegate(string s)
{
if (s == "12")
{
s = "wser";
// I doubted whether = operator is overloaded in string class
//StringBuilder sb = new StringBuilder(s);
//s = sb.Append("eiru").ToString();
s = String.Concat(s, "sdf");
}
});
请注意,字符串的值未发生更改。我的问题是为什么字符串值没有更改? 如果它是引用类型,则字符串值应该更改。
class emp
{
public string id;
}
List<emp> e = new List<emp>() { new emp() { id = "sdf" }, new emp() { id = "1" }, new emp() { id = "2" } };
e.ForEach(delegate(emp em)
{
if (em.id == "1")
em.id = "fghe";
});
这里的值被改变是因为emp
是引用类型
2)如果string
是值类型
public sealed class String : IComparable, ICloneable, IConvertible, IComparable<string>, IEnumerable<char>, IEnumerable, IEquatable<string>
那么为什么他们要提到字符串是一个类呢?