C# string

来源:互联网 发布:中英文阅读软件 编辑:程序博客网 时间:2024/05/17 21:42

string

C#string关键字,在翻译成.NET类时,它就是System.String.有了它,像字符串连接和字符串复制这样的操作就简单了.

1 string 是引用类型还是值类型

引用类型操作

当使用重载操作符”=”string对象赋值时,string的对象是引用类型,保留在,而不是堆栈上.因此,当把一个字符串赋给另一个字符串时,会得到对内存中同一个字符串的两个引用.例如,修改其中一个字符串,就会创建一个全新string对象(注意,这个过程发生在”=”),而另一个字符串没有改变.考虑下面的代码:

publicclass MyClass

{

      publicstaticvoid Main()

      {

        string str1 = "I am a number";

        string str2 = str1;

        Console.WriteLine("str1 ="+str1);

        Console.WriteLine("str2 ="+str2);

       

        str1 = "I am another number"; 

        Console.WriteLine("after str1 changed... str1 ="+str1);

        Console.WriteLine("after str1 changed... str2 ="+str2);

           Console.ReadLine();

      }   

}

 

Output :

str1 = I am a number

str2 = I am a number

after str1 changed...str1 = I am another number

after str1 changed...str2 = I am a number

 

具有值类型特征的操作

string有两种情况下的操作是具有值类型特征的:

1)        在函数中传递string(比如函数参数是string),传递的是地址,但却不能修改成员变量,原因是它重新又创建了一个全新的对象,和它想修改的那个成员变量非同一地址,所以看上去像是值类型;

2)        str1 == str2 ,仅仅是比较了值,而非地址(是MS重写了==运算符所致).

总结:

string 到底是引用类型还是值类型  答:引用类型 .   只不过它在某此操作上会表现出值类型的特征.

string类型的另外一个特殊性在于它是“不会变”的,每次操作string,都相当于新建了一个string对象.

2 ”@”string中的用法

       都知道如果要使用转义字符的话,需要在字符前加上”/”,C#提供了一种新的机制,使用”@”.”@”后的字符串都看作是原意,不会解释为转义字符串.并且”@”开头的字符串支持回车换行的显示方式(见下例).不过会增加到字符串长度,不推荐过多使用.

publicclass MyClass

{

      publicstaticvoid Main()

      {

        string str1 = @"HelloWorld!";

        string str2 = @"line1: Hello

        line2: World!";

        Console.WriteLine("str1 length ="+str1.Length);

        Console.WriteLine("str2 length ="+str2.Length);

        Console.ReadLine();

      }   

}

Output :

str1 length = 11

str2 length = 34

 

 

3 String string的区别:

       StringCLR(运行时库)的类型名字,stringC#中的关键字.其实C#在编译时,会增加代码(下面列出的),string转换成System.String.

using string = System.String;

using sbyte = System.SByte;

using byte = System.Byte;

using short = System.Int16;

using ushort = System.UInt16;

using int = System.Int32;

using uint = System.UInt32;

 

 

4 ”@”的其它用法

       在 C#  规范中, ”@”可以作为标识符(类名、变量名、方法名等)的第一个字符,以允许C# 中保留关键字作为自己定义的标识符.

publicclass MyClass

{

      publicstaticvoid Main()

      {

        @class c = new @class();

        c.@static();

        Console.ReadLine();

      }   

    publicclass @class

    {

        privateint @bool;

        publicvoid @static()

        {

            Console.WriteLine("I've been staticed...and @bool is"+this.@bool);

        }

        public @class()

        {

            this.@bool =999;

        }

    }

}



5.  等于null 和 等于””的区别

       string = null; //不分配内存

       string = “”;     //分配字节为0的内存
原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 想当兵有纹身怎么办 小孩挨打不会还手怎么办 孩子挨打不敢还手怎么办 武警森林改革新兵怎么办 森林武警新兵后来怎么办 部队训练打死人怎么办? 部队受伤退伍后怎么办 60岁失地养老怎么办 梦遗到被子上怎么办 血管打针打的硬怎么办 征兵彩超不过怎么办? 警卫局退役新兵怎么办 有轻微的肾结石怎么办 部队改制边防义务兵怎么办 在部队班长打人怎么办 肾结石在上盏怎么办 带新兵废嗓子怎么办 部队干部想复原怎么办 眼睛度数越来越高怎么办 驾照视力不够4.9怎么办 矫正视力达不到1.0怎么办 原材料复检批次不足怎么办 二年级视力4.5怎么办 儿童400度近视怎么办 境外汇款退回该怎么办 小米快件被退回怎么办 快递自动退回该怎么办 信用卡退回去了怎么办 车子排气污染不合格怎么办 被同学举报作弊怎么办 军检体重不合格怎么办 当兵体检不会蹲怎么办 蟑螂的卵鞘被捏暴了怎么办 睾丸被挤变形怎么办 口香糖粘鞋边上怎么办 鞋底上的口香糖怎么办 鞋底踩了口香糖怎么办 被够狗咬了没出血怎么办 阴囊破皮化脓怎么办 阴囊皮挠破了疼怎么办 洗澡洗不干净怎么办