我對字符串有一個疑問。 我們如何獲取字符串的記憶?字符串修改值
是字符串是引用類型還是值類型?
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>
那麼爲什麼他們mentione該字符串是一類?
請注意這是C#,而不是Java ... :) – Noldorin 2009-09-07 09:30:41
我的不好:)但我留下了答案,因爲這個概念適用。 – 2009-09-07 09:32:20