System.String

[Serializable]
public   sealed   class  String : IComparable, ICloneable,IConvertible, IEnumerable

表示文本,即一连串 Unicode 字符.
字符串是 Unicode 字符的连续集合,通常用于表示文本,而 String 是表示字符串的 System.Char 对象的连续集合。String 的值构成该连续集合的内容,并且该值是恒定的。

String.Clone()方法:这是一个浅拷贝。也就是向一个String对象添加了一个指针。并没有建立一个独立的String对象。不过由于String是只读的,所以这里也不会出现由于一个指针对所指对象进行修改,而影响其他指针所指内容的情况。以下是实现代码,可见只是返回了一个指针而已。

        // Method required for the ICloneable interface.
        // There's no point in cloning a string since they're immutable, so we simply 

        //  return this.
        /// <include file='doc/String.uex' path='docs/doc[@for="String.Clone"]/*' />
        public Object Clone() {
            return this;
        }

 String.Intern()方法,Intern 方法使用拘留池来搜索与 str 值相等的字符串。如果存在这样的字符串,则返回拘留池中它的引用。如果不存在,则向拘留池添加对 str 的引用,然后返回该引用。以下是MSDN上的示例代码。

String s1 = "MyTest";
String s2 = new StringBuilder().Append("My").Append("Test").ToString();
String s3 = String.Intern(s2);
Console.WriteLine((Object)s2==(Object)s1); // Different references.
Console.WriteLine((Object)s3==(Object)s1); // The same reference.

String.IsInterned()方法。也是到拘留池中找看是否有值相同的String。与Intern方法比较是如果有,那么就返回对这个值的引用。如果没有,那么这个函数不会在拘留池中添加String,而仅仅是返回一个空指针。

PadRight()/PadLeft() 可以指定字符串的总长度。如果设置的长度 > 字符串的长度,那么就用设置好的填充符(默认是空格)来进行填充。

String类重载了==,实际上就是调用调用自己重载的Equals函数。进行的是值的比较。以下是具体的实现代码。

        /// <include file='doc/String.uex' path='docs/doc[@for="String.operatorEQ"]/*' />
        public static bool operator == (String a, String b) {
           return String.Equals(a, b);
        }

        // Determines whether two Strings match.
        /// <include file='doc/String.uex' path='docs/doc[@for="String.Equals2"]/*' />
        public static bool Equals(String a, String b) {
            if ((Object)a==(Object)b) {
                return true;
            }
   
            if ((Object)a==null || (Object)b==null) {
                return false;
            }
   
            return a.Equals(b);
        }

       从上面也可以看到,如果要进行引用比较的话,首先要将String对象回溯到Object对象,然后调用Object的Equals进行比较。
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值