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.构造函数通过函数重载的机制可以有多个(不同的构造函数,参数个数,或者参数类型不同. ...
随机推荐
- git之commit改用第三方编辑器
git commit -m "***"方式提交注释,有限制,可通过调用第三方编辑器来编辑更好的注释 1 使用window自带的记事本 git config --global cor ...
- YUV转换成RGB算法
YUV转换成RGB void yuvtorgb ( double *rgb,unsigned char *yuv) { int i; rgb[] = ] + + ] - ); // r rgb[] = ...
- 【转】S1 Setup
概念 S1是eNB和MME之间交换应用层配置数据的接口的名称.它是在建立TNL完成后的第一个S1AP的操作,S1的建立意味着eNB和MME之间之前已经存在的所有应用层数据将被全部清空,所有的数据将被重 ...
- java代码异常篇
总结:掌握流.缓冲区类的方法 package com.b; import java.io.BufferedReader; import java.io.File; import java.io.Fil ...
- 杂项:Grunt
ylbtech-杂项:Grunt GRUNTJavaScript 世界的构建工具 1. 返回顶部 1. 为何要用构建工具? 一句话:自动化.对于需要反复重复的任务,例如压缩(minification) ...
- SQL中得到最后一个“-”后面的字符串
declare @str varchar(50) set @str='-'+'1-9-3-2'--前面加个'-'防止没有'-'出错 select REVERSE(SUBSTRING(REVERSE(@ ...
- JavaScript基本概念B - 关于方法
方法也是对象 这个事需要反复强调.方法是 类型 Function 的对象,和其他对象一样,它也有方法. function gen() { return function ans(factor) { r ...
- MessageBox如何输出整数
int cx=10;CString s;s.Format(_T("整数是:%d"),cx);MessageBox(s);
- [Codeforces]#179 div1-----295ABCDE
摘自我的github:https://github.com/Anoxxx The Solution Source: Codeforces Round #179 (Div. 1) VJudge链接: h ...
- AJAX——Json
一.简介: 客户端利用Ajax请求服务器端时,数据在两者之间通常有两种格式:XML格式的数据:Json(JavaScript Object Notation/JavaScript 对象表示法)格式数据 ...