• string的相关知识点


    string 只是 String 的一个别名,以下三种写法都可以
    string myName="YZX";
    String myName="YZX";
    System.String myName="YZX";
    http://www.cnblogs.com/skywind/archive/2007/04/30/733414.html 中有写到"在C#的编译时,会自动的把string转化为Sysem.string 即 using string = System.String;"
    由于string是C#中的关键字,我们可以统一使用第一种写法

    String虽然是类,但却不能用如下方法赋值:
    String s1=new String("test");
    编译器提示错误
    与“string.String(char*)”最匹配的重载方法具有一些无效参数
    有些示例还用以上方法写,我不知道它们是怎么编译通过的。

    但是却有这样赋值方法:
    String s1=new String('*', 5);
    生成"*****"这个字符串给s1

     

    如果只是取字符串的其中一位,除了用Substring函数外,还可以直接这种表达:
      Console.WriteLine("hello"[1]);

    字符串中==是比较值,而如果要比较对象,要使用(object)来强制转换,或者用Object.ReferenceEquals来检测。

    如下代码能说明什么问题:

    using System;

    class m
    {
     public static void Main()
     {
      string str1="YZX";
      String str2="YZX";
      Console.WriteLine(str1==str2);
      Console.WriteLine((object)str1==(object)str2);

      string a = "hello";
      string b = "h";
     b += "ello"; // append to b
     Console.WriteLine(a==b);
     // output: True -- same value
     Console.WriteLine((object)a==(object)b); // False -- different objects

     }
    }

    运行结果:

    True

    True

    True

    False

    第一个True与第三个True好理解,但第二个却是True,而第四个却是False。可以通过GetHashCode查看字符串是否使用同一位置的。原来字符串分配时有个特点:

    值相同的字符串不重复添加,相同字符串在内存中只保存一份

    http://www.cnblogs.com/JoeDZ/archive/2008/06/27/1230857.html

    using System;
    class Test{
            
    static void Main(string[] args){
                
    string a = "1";
                
    string b = "1";
                
    string c = "2";
            }
        }
    }

    使用visual studio 2005中的调试,转到反汇编,可以得到下面内容:
    ......
                string a = "1";
    0000002b  mov         eax,dword ptr ds:[022C3048h] // 与下面相同
    00000031  mov         ebx,eax
                string b = "1";
    00000033  mov         eax,dword ptr ds:[022C3048h] // 与上面相同
    00000039  mov         esi,eax
                string c = "2";
    0000003b  mov         eax,dword ptr ds:[022C307Ch] // 不同
    ......

    @的使用

    这样的代码编译不会通过

      string str1="C:\Window";
      Console.WriteLine(str1);
    错误信息:无法识别的转义序列

    要这样写

      string str1="C:\\Window";
    或这样写

      string str1=@"C:\Window";
    有@标志后,后面就可以不用转义来说明了。@甚至可以写出这样的代码:

      string str1=@"C:\Win

    dow";
      Console.WriteLine(str1);
    即中间有带回车符。输出时也是带回车符。

     

    一些Unicode的字符,可以这样输入;
    "\uXXXX" 或 "\UXXXX"

     

  • 相关阅读:
    WordCount的程序设计没写出来怎么办
    小程序分析
    程序单元测试
    Visual studio 2013安装
    四则运算源代码
    在VC环境下执行代码出现错误
    微点评微信软件
    软件工程学习
    查找抄袭文章
    软件附加题简答
  • 原文地址:https://www.cnblogs.com/yzx99/p/1258501.html
Copyright © 2020-2023  润新知