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.构造函数通过函数重载的机制可以有多个(不同的构造函数,参数个数,或者参数类型不同. ...
随机推荐
- jacksi(比较实用的工具批处理)
批处理类别: 国产软件 批处理语言: 简体中文 授权方式: 免费软件 运行环境: Windows平台 警告:运行BAT源码是一种危险的动作,如果你不熟悉,请不要尝试! 这里分享的是用bat写的比较实用 ...
- 【转载】BusyBox 简化嵌入式 Linux 系统
原文网址:http://www.ibm.com/developerworks/cn/linux/l-busybox/ BusyBox 是很多标准 Linux® 工具的一个单个可执行实现.BusyBox ...
- SPI编程1:用户空间的读写操作
spi_device 虽然用户空间不需要直接用到spi_device结构体,但是这个结构体和用户空间的程序有密切的关系,理解它的成员有助于理解SPI设备节点的IOCTL命令,所以首先来介绍它.在内核中 ...
- WebDriver数据驱动模式
利用@dataprovider 在一个浏览器内多次登录不同的用户时,必须要每次完成一个登录后,都有一个退出登录的代码,以保持和初始登录页面一致,才不会报错并再次循环登录
- java代码字符字节流
总结: package com.aini; import java.io.IOException; import java.io.InputStreamReader; //流类 import java ...
- jhipster初接触
在Windows7部署之前把几个依赖下了 jdk:1.80 Maven :3.3.9 git:2.14.1 npm:唯一要注意的就是配置一个阿里的镜像,不然慢的你崩溃 Yeoman: npm inst ...
- AngularJS入门之如何快速上手
概述: AngularJS(ng)是一个纯JS框架,AngularJS易于构建CRUD应用(CRUD意思是增删改查) 适用于以数据操作为主的SPA(Single Page Application) ...
- 初识python notes
python数据类型 数字 字符串 列表 元祖 字典 1.为什么要编程 编程的目的是解放人力,这就需要人通过编写程序的方式计算机代替人去自动干活 2.什么是编程语言 编程语言就是人与计算机之间沟通的介 ...
- executeUpdate,executeQuery,executeBatch 的区别
executeQuery : 用于实现单个结果集,例如: Select 一般使用executeQuery 就是来实现单个结果集的工具 executeUpdate 用于执行 INSERT.UPDATE ...
- ActiveMQ (一) 介绍与安装
ActiveMQ是消息中间件的一种 ActiveMQ 是Apache出品,最流行的,能力强劲的开源消息总线.ActiveMQ 是一个完全支持JMS1.1和J2EE 1.4规范的 JMS Provide ...