知秋一叶

日出而作,日入而息,凿井而饮,耕田而食,帝力何有于我哉
随笔 - 55, 评论 - 312, 引用 - 79

导航

标签

每月存档

最新留言

广告

 

  毫无疑问:String是引用类型。另一方面,String和int (Int32), Single (float)一样都是.NET的Primitive类型,CLR完全了解String对象的内部构造,并且有内建的用于String操作的指令(ldstr)。String的源代码不是用.NET语言/C#实现的,而是在CLR代码当中。在SSCLI的代码中Object.H里面可以找到下面的结构:
               class StringObject : public Object
               {
                  private:
                            DWORD   m_ArrayLength;
                            DWORD   m_StringLength;
                            WCHAR   m_Characters[0];
                 ...
                };

    另外,.NET程序仍然有办法打破String的Immutable——当然通常不建议这样做:

  • unsafe code: C#可以使用unsafe代码直接编辑一个String的字符序列:
               fixed (char* p = str) {
                     p[2] = 'X';
               }
  • P/Invoke: 传递String作为变量给Native函数的时候,Native函数可以改变String的值。

             

打印 | 张贴于 2004-08-21 05:24:00 | Tag:.NET

留言反馈

#c#中String跟string的“区别” 编辑
c#中String跟string的“区别”
2007-07-27 01:36:00 | [匿名:xiaotian]
#C# String 与 string的问题 编辑
C# String 与 string的问题
2007-07-27 01:05:00 | [匿名:xiaotian]
#C# String 与 string的问题 编辑
1. C#到底是什么时候传引用?什么时候传值?
2. String传值还是传引用
3. string和String有什么区别?
4. String为什么是Immutable,怎么实现的?
2006-03-28 16:12:00 | [匿名:kiss0kill]
#re: More On Strings: The Implementation 编辑
ri ni ma
2005-11-04 09:43:00 | [匿名:a]
#re:More On Strings: The Implementation 编辑
More On Strings: The Implementationooeess
2005-06-14 10:40:00 | [匿名:一氧化碳测定仪]
#re:More On Strings: The Implementation 编辑
^_~,pretty good!csharpsseeoo
2005-05-16 17:17:00 | [匿名:测振仪]
#re:More On Strings: The Implementation 编辑
^_^,Pretty Good!
2005-04-16 01:42:00 | [匿名:MC145010P]
#re:More On Strings: The Implementation 编辑
^_^,Pretty Good!
2005-04-10 19:56:00 | [匿名:料位开关]
#re: More On Strings: The Implementation 编辑
string的每一次修改,都会先在内存里copy一份然后来更改
如果改用char[]应该可以实现更改
2004-08-21 21:18:00 | [匿名:xxx]
#re: More On Strings: The Implementation 编辑
"P/Invoke: 传递String作为变量给Native函数的时候,Native函数可以改变String的值。"

对于定义如 public void xx(string yy);的函数,传进去的yy的值是改不了的.
一般,如果P/Invoke的时候想要修改传进去的string的值,推荐使用StringBuilder.
2004-08-21 14:20:00 | [匿名:hBifTs]
对不起,目前本随笔不允许发表新评论.

Powered by: Joycode.MVC引擎 0.5.2.0