C#字符串要点(复习专用)
一、字符串
- 通过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#字符串要点(复习专用)的更多相关文章
- ContentProvider要点复习
ContentProvider要点复习 ContentProvider作为四大组件之一,发挥着举足轻重的作用.与之相关联的另外两个类分别是ContentResolver和ContentObserver ...
- C#知识点提炼期末复习专用
根据内部消息称:有三类题型: 程序阅读题:2题 简答题:2题 (主要是对概念的考查) 编程题:暂定2-3题 复习要点: .net framework 通用语言开发环境..NET基础类库..NET ...
- python随笔--复习专用
<!doctype html> blockquote:first-child, #write > div:first-child, #write > figure:first- ...
- C#数据类型及差异(复习专用)
一.数据类型 值类型 类型 描述 范围 默认值 bool 布尔值 True 或 False False byte 8 位无符号整数 0 到 255 0 char 16 位 Unicode 字符 U + ...
- ES6-字符串-模板字符串(复习+学习)
昨天学习了字符串对象和字符串的表示,就是利用utf-8等不同的编码方式,还有许多的对象方法,都是处理字符串的方法,挺方便的,今天我学习了一下字符串模板,这里记录i一下学习的笔记,当然,今天学习了部分内 ...
- Fragment要点复习
做系统时间久了,应用层的很多东西都忘了,但是基础还是得巩固,下面对fragment相关的知识点简单整理一下. 一.fragment的引入 fragment是从Android3.0(API level ...
- C++类构造析构调用顺序训练(复习专用)
//对象做函数参数 //1 研究拷贝构造 //2 研究构造函数,析构函数的调用顺序 //总结 构造和析构的调用顺序 #include "iostream" using namesp ...
- javaweb要点复习 jsp和servlet
jsp:就是java server page , html嵌入java ,所以更方面显示(V) serlet,就是服务器端小程序 java中嵌入html,更方面业务处理. jsp执行过程 1)客户 ...
- C++基本要点复习--------coursera程序设计实习(PKU)的lecture notes
因为一些特性复杂,很多时候也用不到一些特性,所以忘记了,算是随笔,也当作一个临时查找的手册.没有什么顺序,很杂. 1.构造函数通过函数重载的机制可以有多个(不同的构造函数,参数个数,或者参数类型不同. ...
随机推荐
- bzoj 1798 [Ahoi2009]Seq 维护序列seq ——线段树
题目:https://www.lydsy.com/JudgeOnline/problem.php?id=1798 先乘后加,就可给加法标记乘上乘法标记. 注意可能有 *0 的操作,所以 pshd 时不 ...
- poj 1201 Intervals——差分约束裸题
题目:http://poj.org/problem?id=1201 差分约束裸套路:前缀和 本题可以不把源点向每个点连一条0的边,可以直接把0点作为源点.这样会快许多! 可能是因为 i-1 向 i 都 ...
- 第二届PHP全球开发者大会(含大会的PPT)
PHP全球开发者大会于2016年5月14日至15日在北京召开 更多现场图片请猛击: http://t.cn/RqeP7y9 , http://t.cn/RqD8Typ 最后,这次大会的PPT可以在这 ...
- PHP5之前的构造函数与PHP5之后的构造函数的区别
在PHP5以前的版本中,构造函数的名称必须与类名相同,这种方法在PHP5中仍然可以使用,但现在已经很少有人用了. PHP5以及之后的版本,构造函数用__construct()方法来声明,这样做的好处是 ...
- STM32 -- 硬件知识
一.网站资源 1.http://www.stmcu.com.cn/ 二.硬件 1.BOOT0 和 BOOT1 1)一般BOOT0和BOOT1跳线都跳到0(地): 只是在ISP下载的情况下,BOO ...
- java代码swing编程 制作一个单选按钮的Frame
不善于思考,结果费了时间,也没有效果 下面的框框可以做出来. package com.kk; import javax.swing.JFrame; import javax.swing.JLabel; ...
- Java-API:javax.servlet.http.HttpServletResponse
ylbtech-Java-API:javax.servlet.http.HttpServletResponse 1.返回顶部 1. javax.servlet.http Interface HttpS ...
- Oracle 存储过程学习笔记
1.存储过程简单实例 CREATE OR REPLACE PROCEDURE 存储过程名称 (参数in,参数out) AS -- 变量声明,每个声明用分号结束.可以在声明的同时初始化 name ); ...
- Idea编译器 报@Override错误
据说这是jdk的问题,@Override是JDK5就已经有了,但有个小小的Bug,就是不支持对接口的实现,认为这不是Override 而JDK6修正了这个Bug,无论是对父类的方法覆盖还是对接口的实现 ...
- 单片机RS485通信接口、控制线、原理图及程序实例
RS232 标准是诞生于 RS485 之前的,但是 RS232 有几处不足的地方: 接口的信号电平值较高,达到十几 V,使用不当容易损坏接口芯片,电平标准也与TTL 电平不兼容. 传输速率有局限,不可 ...