常用类库StringBuilder

StringBuilder高效的字符串操作
当大量进行字符串操作的时候,比如,很多次的字符串的拼接操作。
String 对象是不可变的。 每次使用 System. String 类中的一个方法时,都要在内存中创建一个新的字符串对象,这就需要为该新对象分配新的空间。 在需要对字符串执行重复修改的情况下,与创建新的 String 对象相关的系统开销可能会非常大。 如果要修改字符串而不创建新的对象,则可以使用 System.Text. StringBuilder 类。 例如,当在一个循环中将许多字符串连接在一起时,使用 StringBuilder 类可以提升性能。 
StringBuilder  != String//将StringBuilder转换为String.用ToString();
StringBuilder仅仅是拼接字符串的工具,大多数情况下还需要把StringBuilder转换为String.
StringBuilder sb = new StringBuilder();
sb.Append();//追加字符串
sb.ToString();//把StringBuilder转换为字符串。
sb.Insert();
sb.Replace();

List<T>泛型集合

List<T>是C#中一种快捷、易于使用的泛型集合类型,使用泛型编程为编写面向对象程序增加了极大的效率和灵活性。

1、List<T>用法

(1)创建一个List<T>泛型集合对象实例
List<T> list = new List<T>();// T 为列表中元素的类型

List<string> mlist = new List<string>();//创建了一个 string 类型的集合
(2)以一个集合作为参数创建新的泛型集合对象实例
string[] strArr ={"1","2","3","4","5"};
List<string> strList =List<string>(strArr);//把数组作为参数新建一个string类型集合

2、添加元素到List<T>

(1)添加一个元素
strList.Add("Hello");//把一个字符串添加到strList集合中
 
(2)添加一组元素集合
string[] strArr ={"1","2","3","4","5"};
strList.AddRange(strArr);//把数组添加到集合中,数组也可以理解为一个有限长度的集合
 
(3)在指定位置添加要添加的元素
Insert(int index, T item);//index 为要添加元素的位置
以下示例:
strList.Insert(1,"萨瓦迪卡");//在集合中第1个元素后面的位置插入一个元素

3、泛型集合的遍历

可以使用 foreach 循环轻松遍历 List<T> 中的所有元素,示例:
foreach(string s in strList)
{
Console.WriteLine(s);//输出遍历到的元素的值
}
 
 
 

Dictionary<K , V>  键值对集合

 
 
 
下面是对于Dictionary的一些常用的操作,包括遍历,添加,删除等
 
(1)新建一个Dictionary<Keys ,Values>  键值对集合
//新建一个键是int类型 ,值是 string类型的键值对集合
Dictionary<int,string> dictionary =newDictionary<int,string>();
(2)往键值对集合添加数据
//注意:这里的键可以是声明类型的范围的任意值,不必按照顺序,会跟stirng类型的值相对应
dictionary.Add(1,"张三");
dictionary.Add(21,"李四");
dictionary.Add(33,"王五");
dictionary.Add(4,"赵六");
(3)遍历键值对集合的Keys(键)和Values(值)
foreach(KeyValuePair<int,string> kvp in dictionary)
{
//输出遍历到的键值对集合元素的键和值
Console.WriteLine("key={0},value={1}", kvp.Key, kvp.Value);
}
 
(4)遍历Keys(键)
foreach(int j in dictionary.Keys)
{
//输出遍历到的键值对元素的键
Console.WriteLine("key={0},value={1}", j, dictionary[j]);
}
 
(5)遍历Values(值)
//遍历Values
foreach(string item in dictionary.Values)
{
//输出遍历到的Values(值)
Console.WriteLine("value:{0}", item);
}
 
 
(5)判断键值对集合是否包含某个Keys(键)
//判断是否包含 2 这个键,返回bool类型,true则包含
if(dictionary.ContainsKey(2))
{
//输出这个键所对应的值
Console.WriteLine(dict[2]);
}
1.装箱、拆箱必须是: 值类型→引用类型  或  引用类型→值类型。
            object,接口。值类型是可以实现接口。
            Person p=new Student();//这个叫隐式类型转换,不叫装箱。
            Student stu=(Student)p;//这个叫显示类型转换,不叫拆箱。
            int类型为什么能装箱到object类型,但不能装箱到string类型或Person类型,
            因为object类型是int类型的父类。 
2.拆箱时,必须用装箱时的类型来拆箱
            装箱时如果是int,拆箱必须用int,不能用double  3.方法重载时,如果具有该类型的重载,那么就不叫拆箱或装箱。
int n=10; Console.WriteLine(n);//没有发生装箱,因为方法重载。 ==============================
1.以下代码进行了几次装箱?(3次装箱,1次拆箱,注意数字与字符串相加,最终调用的是string.Contact())
int n = 10;
object o = n;
n = 100;
Console.WriteLine(n + "," + (int)o);
Console.ReadKey();
//通过Reflector查看,并说明为什么?

C#基础精华03(常用类库StringBuilder,List<T>泛型集合,Dictionary<K , V> 键值对集合,装箱拆箱)的更多相关文章

  1. Java常用类__装箱/拆箱

    以下是常用的各两种方法(各类提供了构造方法,静态方法) 一.基本数据类型 转化为 包装类(装箱) 例:int i=10: Integer num=i;//num=10 二.包装类 转化为  基本数据类 ...

  2. JavaScript DOM编程基础精华03(动态设置,层的操作,性能问题)

    代码是否需要放置到onload中  //如果js代码需要操作页面上的元素,则将该代码放到onload里面.         //因为当页面加载完毕之后页面上才会有相关的元素 //如果js代码中没有操作 ...

  3. 常用类库StringBuilder

    1.使用StringBuilder拼接字符串实例: string[] lines = File.ReadAllLines("sdjk.txt", Encoding.Default) ...

  4. jQuery编程基础精华03(RadioButton操作,事件,鼠标)

    RadioButton操作 取得RadioButton的选中值,被选中的radio只有一个值,所以直接用val()  $('#btn1').click(function () {           ...

  5. JavaScript基础精华03(String对象,Array对象,循环遍历数组,JS中的Dictionary,Array的简化声明)

    String对象(*) length属性:获取字符串的字符个数.(无论中文字符还是英文字符都算1个字符.) charAt(index)方法:获取指定索引位置的字符.(索引从0开始) indexOf(‘ ...

  6. .NET 内存基础(通过内存体验类型、传参、及装箱拆箱)

    该随笔受启发于<CLR Via C#(第三版)>第四章4.4运行时的相互联系 一.内存分配的几个区域 1.线程栈 局部变量的值类型 和 局部变量中引用类型的指针(或称引用)会被分配到该区域 ...

  7. 基础才是重中之重~Dictionary<K,V>里V的设计决定的性能

    回到目录 字典对象Dictionary<K,V>我们经常会用到,而在大数据环境下,字典使用不当可能引起性能问题,严重的可能引起内在的溢出! 字典的值建议为简单类型,反正使用Tuple< ...

  8. C#基础复习(2) 之 装箱拆箱

    参考资料 [1] @只增笑耳Jason的回答 https://www.zhihu.com/question/57208269 [2] <C# 捷径教程> 疑难解答 装箱和拆箱是什么? 何时 ...

  9. Java 基础巩固:装箱拆箱 你真的熟悉吗

    先考两道题: Integer a1 = 300; Integer a2 =300; System.out.print(a1 == a2); Integer b1 = 1; Integer b2 = 1 ...

随机推荐

  1. Php 魔术常量

    魔术常量 由于其值在程序运行过程中不允许更改,所以是常量:其值,又是运行环境不同而不现,所以叫魔术. __DIR__            当前脚本文件的路径 示例: __LINE__         ...

  2. 翻译:如何编译 Gunz 源代码

    如何编译 Gunz 源代码 本文翻译自:How to build Gunz source code 各位好,近期 Dawson 发布了 Gunz 的源代码,所以我就来做个简单的教程,来说明如何编译 G ...

  3. vc 编译执行bat

    转载:

  4. 利用Linux下的pthread_mutex_t类型来实现哲学家进餐问题

    首先说一下什么是哲学家进餐问题,这是操作系统课程中一个经典的同步问题, 问题如下:如上图,有6个哲学家和6根筷子(那个蓝色部分表示哲学家,那个紫色长条部分表示筷子),他们分别被编了0~5的号!如果某个 ...

  5. 利用HibernateTools从数据库表生成带注解的POJO

    在SSH框架中,如果先设计好了数据库,那么下一步就需要从数据库Table生成实体java类和hbm.xml配置文件.在最新的开发框架中,已经支持使用注解,从而避免了繁琐的hbm.xml配置,而且我们可 ...

  6. C# 实现HTML5服务器推送事件

    为什么需要服务器推送事件: 因为如果需要保持前台数据的实时更新例如,IM聊天,股票信息, 1.可以在客户端不断地调用服务端的方法来获得新数据,但是这样会很消耗服务器资源,导致系统变慢! 2 html5 ...

  7. JavaScript的语法要点 4 - 面向对象的基础

    在传统的面向对象语言如C++.C#.Java中有类.对象.继承等概念.在JavaScript中又如何表示呢?JavaScript中没有class关键字,JavaScript中的类.对象.继承的概念是通 ...

  8. 分享php中四种webservice实现的简单架构方法及实例[转载]

    [转载]http://www.itokit.com/2012/0417/73615.html 本人所了解的webservice有以下几种:PHP本身的SOAP,开源的NUSOAP,商业版的PHPRPC ...

  9. linux centos 安装

    本着学习的目的,在自己的电脑上进行 centos 7 安装,记录下这步骤以备忘. 一.Centos 下载 centos 官方(https://www.centos.org/)下载ISO镜像(这是我的下 ...

  10. laravel--上传

    1.视图里面 2.控制器里面 //收集表单提交数据 $input = $request->all(); //查看是否有图片提交上来 if ($request->hasFile('title ...