一、字符串

  •   通过string定义一个字符串,或者通过String类来创建对象。

    •   通过new String() 创建有一下几种构造函数(从元数据),以此顺序创建string;
    • //
      // 摘要:
      // 将 System.String 类的新实例初始化为由 Unicode 字符数组指示的值。
      //
      // 参数:
      // value:
      // Unicode 字符的数组。
      [SecuritySafeCritical]
      public String(char[] value);
      //
      // 摘要:
      // 将 System.String 类的新实例初始化为由指向 8 位有符号整数数组的指针指示的值。
      //
      // 参数:
      // value:
      // 一个指针,指向以 null 结尾的 8 位带符号整数数组。
      //
      // 异常:
      // T:System.ArgumentNullException:
      // value 为 null。
      //
      // T:System.ArgumentException:
      // 如果 value 是用 ANSI 编码的,则不能使用 value 初始化 System.String 的新实例。
      //
      // T:System.ArgumentOutOfRangeException:
      // 要初始化的新字符串的长度过大,无法分配,该长度由 value 的 null 终止字符决定。
      //
      // T:System.AccessViolationException:
      // value 指定的地址无效。
      [CLSCompliant(false)]
      [SecurityCritical]
      public String(sbyte* value);
      //
      // 摘要:
      // 将 System.String 类的新实例初始化为由指向 Unicode 字符数组的指定指针指示的值。
      //
      // 参数:
      // value:
      // 指向以 null 终止的 Unicode 字符数组的指针。
      //
      // 异常:
      // T:System.ArgumentOutOfRangeException:
      // 当前进程并不是对所有编址字符都有读取权限。
      //
      // T:System.ArgumentException:
      // value 指定了包含无效 Unicode 字符的数组,或者 value 指定了小于 64000 的地址。
      [CLSCompliant(false)]
      [SecurityCritical]
      public String(char* value);
      //
      // 摘要:
      // 将 System.String 类的新实例初始化为由重复指定次数的指定 Unicode 字符指示的值。
      //
      // 参数:
      // c:
      // 一个 Unicode 字符。
      //
      // count:
      // c 出现的次数。
      //
      // 异常:
      // T:System.ArgumentOutOfRangeException:
      // count 小于零。
      [SecuritySafeCritical]
      public String(char c, int count);
      //
      // 摘要:
      // 将 System.String 类的新实例初始化为由 Unicode 字符数组、该数组内的起始字符位置和一个长度指示的值。
      //
      // 参数:
      // value:
      // Unicode 字符的数组。
      //
      // startIndex:
      // value 内的起始位置。
      //
      // length:
      // 要使用的 value 内的字符数。
      //
      // 异常:
      // T:System.ArgumentNullException:
      // value 为 null。
      //
      // T:System.ArgumentOutOfRangeException:
      // startIndex 或 length 小于零。- 或 -startIndex 和 length 之和大于 value 中的元素数。
      [SecuritySafeCritical]
      public String(char[] value, int startIndex, int length);
      //
      // 摘要:
      // 将 System.String 类的新实例初始化为由指向 8 位有符号整数数组的指定指针、该数组内的起始位置和一个长度指示的值。
      //
      // 参数:
      // value:
      // 指向 8 位带符号整数数组的指针。
      //
      // startIndex:
      // value 内的起始位置。
      //
      // length:
      // 要使用的 value 内的字符数。
      //
      // 异常:
      // T:System.ArgumentNullException:
      // value 为 null。
      //
      // T:System.ArgumentOutOfRangeException:
      // startIndex 或 length 小于零。- 或 -由 value + startIndex 指定的地址相对于当前平台来说太大;即,地址计算溢出。-
      // 或 -要初始化的新字符串的长度太大,无法分配。
      //
      // T:System.ArgumentException:
      // 由 value + startIndex 指定的地址小于 64K。- 或 -如果 value 是用 ANSI 编码的,则不能使用 value 初始化 System.String
      // 的新实例。
      //
      // T:System.AccessViolationException:
      // value、startIndex 和 length 共同指定的地址无效。
      [CLSCompliant(false)]
      [SecurityCritical]
      public String(sbyte* value, int startIndex, int length);
      //
      // 摘要:
      // 将 System.String 类的新实例初始化为由指向 Unicode 字符数组的指定指针、该数组内的起始字符位置和一个长度指示的值。
      //
      // 参数:
      // value:
      // 指向 Unicode 字符数组的指针。
      //
      // startIndex:
      // value 内的起始位置。
      //
      // length:
      // 要使用的 value 内的字符数。
      //
      // 异常:
      // T:System.ArgumentOutOfRangeException:
      // startIndex 或 length 小于零,value + startIndex 引起指针溢出,或者当前进程并不是对所有编址字符都有读取权限。
      //
      // T:System.ArgumentException:
      // value 指定了包含无效 Unicode 字符的数组,或者 value + startIndex 指定了小于 64000 的地址。
      [CLSCompliant(false)]
      [SecurityCritical]
      public String(char* value, int startIndex, int length);
      //
      // 摘要:
      // 将 System.String 类的新实例初始化为由指向 8 位有符号整数数组的指定指针、该数组内的起始位置、长度以及 System.Text.Encoding
      // 对象指示的值。
      //
      // 参数:
      // value:
      // 指向 8 位带符号整数数组的指针。
      //
      // startIndex:
      // value 内的起始位置。
      //
      // length:
      // 要使用的 value 内的字符数。
      //
      // enc:
      // 一个对象,用于指定如何对 value 所引用的数组进行编码。如果 enc 为 null,则假定以 ANSI 编码。
      //
      // 异常:
      // T:System.ArgumentNullException:
      // value 为 null。
      //
      // T:System.ArgumentOutOfRangeException:
      // startIndex 或 length 小于零。- 或 -由 value + startIndex 指定的地址相对于当前平台来说太大;即,地址计算溢出。-
      // 或 -要初始化的新字符串的长度太大,无法分配。
      //
      // T:System.ArgumentException:
      // 由 value + startIndex 指定的地址小于 64K。- 或 -未能使用 value 初始化 System.String 的新实例,假定 value
      // 按照 enc 的指定进行编码。
      //
      // T:System.AccessViolationException:
      // value、startIndex 和 length 共同指定的地址无效。
      [CLSCompliant(false)]
      [SecurityCritical]
      public String(sbyte* value, int startIndex, int length, Encoding enc);
    • char []cstr = { 'a','b','c','d','e'};
      char cstr1 = 'a';
      sbyte se = ; String a = new String(cstr);
      // String b = new String(&cstr1); String c = new String(&se); String d = new String('d',); String e = new String(cstr,,); String f = new String(&se,,);
      Console.WriteLine((int)Convert.ToChar(f)+"\n");//
      String g = new String(&se,,,Encoding.UTF8);
      Console.WriteLine("a:{0}\nb:{1}\nc:{2}\nd:{3}\ne:{4}\nf:{5}\ng:{6}",a,b,c,d,e,f,g);
  •   string是C#基元类型(primitive),string简单来说就是编译器直接支持的数据类型。运算符(== 和 !=)是为了比较 string 对象的值, 而不是比较引用
    • string a = "";
      string b = "";
      b += "";
      Console.WriteLine(a == b);//比较值
      Console.WriteLine((object)a == (object)b);//比较引用()
  •   string连接操作 (+=)
    •   缺点很明显, 操作频繁的话十分浪费内存空间的
    •   使用StringBuilder类对象方法append代替+=, 性能还有所提升
  •   null," "和string.Empty的区别
    •   null表示不引用任何变量的空引用的值,null是引用变量的默认值, 值类型变量无法使用
    •   ""表示分配一个内存为空的存储空间。
    •   string.Empty表示空字符串,并且不分配内存空间。
  •   判断字符串为空 的俩种方法
    •   x.length==0 // 无法判断为null的字符串
    •   string.IsNullOrEmpty(x)
       

C#字符串要点(复习专用)的更多相关文章

  1. ContentProvider要点复习

    ContentProvider要点复习 ContentProvider作为四大组件之一,发挥着举足轻重的作用.与之相关联的另外两个类分别是ContentResolver和ContentObserver ...

  2. C#知识点提炼期末复习专用

    根据内部消息称:有三类题型:  程序阅读题:2题  简答题:2题 (主要是对概念的考查)  编程题:暂定2-3题 复习要点: .net framework 通用语言开发环境..NET基础类库..NET ...

  3. python随笔--复习专用

    <!doctype html> blockquote:first-child, #write > div:first-child, #write > figure:first- ...

  4. C#数据类型及差异(复习专用)

    一.数据类型 值类型 类型 描述 范围 默认值 bool 布尔值 True 或 False False byte 8 位无符号整数 0 到 255 0 char 16 位 Unicode 字符 U + ...

  5. ES6-字符串-模板字符串(复习+学习)

    昨天学习了字符串对象和字符串的表示,就是利用utf-8等不同的编码方式,还有许多的对象方法,都是处理字符串的方法,挺方便的,今天我学习了一下字符串模板,这里记录i一下学习的笔记,当然,今天学习了部分内 ...

  6. Fragment要点复习

    做系统时间久了,应用层的很多东西都忘了,但是基础还是得巩固,下面对fragment相关的知识点简单整理一下. 一.fragment的引入 fragment是从Android3.0(API level ...

  7. C++类构造析构调用顺序训练(复习专用)

    //对象做函数参数 //1 研究拷贝构造 //2 研究构造函数,析构函数的调用顺序 //总结 构造和析构的调用顺序 #include "iostream" using namesp ...

  8. javaweb要点复习 jsp和servlet

    jsp:就是java server page ,  html嵌入java  ,所以更方面显示(V) serlet,就是服务器端小程序 java中嵌入html,更方面业务处理. jsp执行过程 1)客户 ...

  9. C++基本要点复习--------coursera程序设计实习(PKU)的lecture notes

    因为一些特性复杂,很多时候也用不到一些特性,所以忘记了,算是随笔,也当作一个临时查找的手册.没有什么顺序,很杂. 1.构造函数通过函数重载的机制可以有多个(不同的构造函数,参数个数,或者参数类型不同. ...

随机推荐

  1. jacksi(比较实用的工具批处理)

    批处理类别: 国产软件 批处理语言: 简体中文 授权方式: 免费软件 运行环境: Windows平台 警告:运行BAT源码是一种危险的动作,如果你不熟悉,请不要尝试! 这里分享的是用bat写的比较实用 ...

  2. 【转载】BusyBox 简化嵌入式 Linux 系统

    原文网址:http://www.ibm.com/developerworks/cn/linux/l-busybox/ BusyBox 是很多标准 Linux® 工具的一个单个可执行实现.BusyBox ...

  3. SPI编程1:用户空间的读写操作

    spi_device 虽然用户空间不需要直接用到spi_device结构体,但是这个结构体和用户空间的程序有密切的关系,理解它的成员有助于理解SPI设备节点的IOCTL命令,所以首先来介绍它.在内核中 ...

  4. WebDriver数据驱动模式

    利用@dataprovider 在一个浏览器内多次登录不同的用户时,必须要每次完成一个登录后,都有一个退出登录的代码,以保持和初始登录页面一致,才不会报错并再次循环登录

  5. java代码字符字节流

    总结: package com.aini; import java.io.IOException; import java.io.InputStreamReader; //流类 import java ...

  6. jhipster初接触

    在Windows7部署之前把几个依赖下了 jdk:1.80 Maven :3.3.9 git:2.14.1 npm:唯一要注意的就是配置一个阿里的镜像,不然慢的你崩溃 Yeoman: npm inst ...

  7. AngularJS入门之如何快速上手

      概述: AngularJS(ng)是一个纯JS框架,AngularJS易于构建CRUD应用(CRUD意思是增删改查) 适用于以数据操作为主的SPA(Single Page Application) ...

  8. 初识python notes

    python数据类型 数字 字符串 列表 元祖 字典 1.为什么要编程 编程的目的是解放人力,这就需要人通过编写程序的方式计算机代替人去自动干活 2.什么是编程语言 编程语言就是人与计算机之间沟通的介 ...

  9. executeUpdate,executeQuery,executeBatch 的区别

    executeQuery : 用于实现单个结果集,例如: Select 一般使用executeQuery 就是来实现单个结果集的工具 executeUpdate 用于执行 INSERT.UPDATE ...

  10. ActiveMQ (一) 介绍与安装

    ActiveMQ是消息中间件的一种 ActiveMQ 是Apache出品,最流行的,能力强劲的开源消息总线.ActiveMQ 是一个完全支持JMS1.1和J2EE 1.4规范的 JMS Provide ...