30天C#基础巩固------this,base,string中的方法,StringBuilder性能
这里主要是记录下自己学习笔记,希望有个地方在以后可以看到自己走过的路。
关于之前多态的知识有一个口诀,很好理解里面的override和new,virtual关键字。
“new则隐藏,over重写,隐藏看类型,重写只管新”
面向对象的三大特征:封装,继承,多态。
非面向对象的特征---静态

静态一般的是使用的是方法,很少有字段。
下面是修饰符的图片,关于修饰符这个要在项目中使用,慢慢的理解。

一:this和base的区别。
这两个都是在我们进行开发经常使用的,关于this代表类的本身,我们可以利用它来对类进行设置,取值。而base代表父类,可以为其赋值。
public class Person
{
private string name;
private int age;
private char sex;
public Person(string name,int age,char sex)
{
this.name = name;
this.age = age;
this.sex = sex;
}
//一个参数的CTOR,这里的this代表的是第三个构造函数
public Person(string name):this(name,"男女"[new Random().Next(2)])
{
}
//第三个,这里的this代表的是第一个CTOR
public Person(string name,char sex):this(name,0,sex)
{
}
}
base我们一般在使用父类里面的东西时使用。
二:关于C#中的string
1:构造方法

上面是vs中string类型中的构造函数,这里面都有中文的注释,可以理解。
2:常用属性
索引(Chars) 比如说str[3]:表示的是字符串中第三个字符。其实string里面和就相当于一个数组一样,有下标,我们可以使用索引来处理。
Length;表示字符串的长度。<下标从0开始>
3:常用方法
增加:
-->
public string Insert(int startIndex, string value); // 返回指定字符串在这种情况下插入在指定索引位置的新字符串。
-->
public string Replace(string oldValue, string newValue); //返回一个新字符串,其中当前实例中出现的所有指定字符串都替换为另一个指定的字符串。
-->
Concat()用来连接两个数据(数字,string,int,char等)
string strss = string.Concat(strs,"aaa"); //注意这里的string.Concat();

-->
public static string Join(string separator, params object[] values);//串联字符串数组的所有元素,其中在每个元素之间使用指定的分隔符。 separator:要用作分隔符的字符串。
string[] str = { "111", "222", "333" };
string strss = string.Join("",str); //注意这里的string.Join("",str);把数组中的""去掉分离,合并为一个string类型
Console.WriteLine(strss);
Console.ReadKey();

删除
-->
public string Remove(int startIndex, int count); // 返回指定数量字符在当前这个实例起始点在已删除的指定的位置的新字符串。
string str = "012345";
str=str.Remove(1,2); //删除,从下标1开始数2个删除,余下0345
Console.WriteLine(str);
Console.ReadKey();
-->
string str = "012345";
str = str.Substring(1, 3); //截取字符串从下标为1开始数3个数。
Console.WriteLine(str);
Console.ReadKey();
-->
public string Trim();从当前 System.String 对象移除所有前导空白字符和尾部空白字符。
string str = " 012 34 5 ";
Console.WriteLine(str);
str = str.Trim();
Console.WriteLine(str);

-->
public string PadLeft(int totalWidth, char paddingChar);
string str = "12434";
str = str.PadLeft(10, '0'); //返回一个新字符串,该字符串通过在此实例中的字符左侧填充指定的 Unicode 字符来达到指定的总长度,从而使这些字符右对齐。
Console.WriteLine(str);
str = "12434";
str = str.PadRight(10, '9'); //和上面的一样,只是从右边来填充9
Console.WriteLine(str);
改:
-->
首先ToCharArray(),在Join或Concat或构造函数
查看:
-->
public bool Contains(string value);//返回一个值,该值指示指定的 System.String 对象是否出现在此字符串中。
eg:
string str = "21434";
bool s=str.Contains("7"); //看str中是否有7
Console.WriteLine(s);
-->
public int IndexOfAny(char[] anyOf);//报告指定 Unicode 字符数组中的任意字符在此实例中第一个匹配项的从零开始的索引。
其它:
-->
bool a=string.IsNullOrEmpty(str); //字符串判空
-->
public string[] Split(params char[] separator);// 返回的字符串数组包含此实例中的子字符串(由指定 Unicode 字符数组的元素分隔)。
eg:
我们可以使用Split里面的参数就可以把多余的空格去掉。

现在就把里面的空格去掉了,a里面存取了4个string类型。
-->两个字符串的比较

三:StringBuilder
-->字符串不可变,长期拼接字符串性能较低
eg:通过Stopwatch类来计时;
Stopwatch sw = new Stopwatch(); //提供一组方法和属性,可用于准确地测量运行时间。
sw.Start();
string s="";
for (int i = 0; i < 10000; i++)
{
s+= i.ToString();
}
sw.Stop();
Console.WriteLine(sw.Elapsed); //显示总共使用了多长的时间
Console.ReadKey();

这里要是把10000变为1000000性能就特别底下,时间会特别大。
现在我们换成StringBulider来看看。
Stopwatch sw = new Stopwatch(); //提供一组方法和属性,可用于准确地测量运行时间。
sw.Start();
StringBuilder sb=new StringBuilder(); //设置一个StringBuilder来保存字符串,性能特别好。
for (int i = 0; i <100000; i++)
{
sb.Append(i.ToString());
}
sw.Stop();
Console.WriteLine(sw.Elapsed); //显示总共使用了多长的时间
Console.ReadKey();

这里我换成了100000性能还是这么的6.
30天C#基础巩固------this,base,string中的方法,StringBuilder性能的更多相关文章
- java基础解析系列(一)---String、StringBuffer、StringBuilder
java基础解析系列(一)---String.StringBuffer.StringBuilder 前言:本系列的主题是平时容易疏忽的知识点,只有基础扎实,在编码的时候才能更注重规范和性能,在出现bu ...
- Java09-java语法基础(八)java中的方法
Java09-java语法基础(八)java中的方法 一.方法(函数/过程):是一个程序块,可以完成某种功能 1.java中方法的定义格式 [访问控制修饰符] 返回值类型 方法名(参数列表){ 方 ...
- C++中 string 中的方法的使用详解
string 字符串在所有的语言中都非常重要,c++也不例外,接下来我们将介绍string中的常用方法 1. size() 和 length() 函数 : 他们返回字符串的真实长度,且不会因为空格而截 ...
- java String 中 intern方法的概念
1. 首先String不属于8种基本数据类型,String是一个对象. 因为对象的默认值是null,所以String的默认值也是null:但它又是一种特殊的对象,有其它对象没有的一些特性. 2. ne ...
- String中concat方法小记
介绍String中的concat方法使用: 日常开发中,经常对字符串进行处理,之前碰到多个字符串拼接,要么使用stringBuilder,要么使用StringBuffer,再或者是直接多个String ...
- String中intern方法的作用
前言 读完这篇文章你可以了解,String对象在虚拟机内存中的存放,intern的作用,这么多String对象的创建到底有什么区别,String 创建的对象有几个!! 正题 先科普几个知识点1.常量池 ...
- Java基础-重写-子类重写父类中的方法后执行情况
代码 public class Test { public static void main(String[] args) { Shape shape = new Circle(); System.o ...
- Javascript ----字符串(String)中的方法
涉及字符串时,常用到的几个方法... --------------------------------------------------------------------------------- ...
- String中重要方法与字段
下列这段代码已全部包含了我要写的String类中重要的字段: //StringMisc.java// This program demonstrates the length, charAt and ...
随机推荐
- [.NET领域驱动设计实战系列]专题五:网上书店规约模式、工作单元模式的引入以及购物车的实现
一.前言 在前面2篇博文中,我分别介绍了规约模式和工作单元模式,有了前面2篇博文的铺垫之后,下面就具体看看如何把这两种模式引入到之前的网上书店案例里. 二.规约模式的引入 在第三专题我们已经详细介绍了 ...
- Async and Await 异步和等待
[第一次这么耐下性子认真写博客,虽然觉得很认真了,当毕竟是第一次嘛,以后再看肯定觉得很不咋滴的,更何况园子里有那么多的高人和大侠,这篇文章就权当练练手了,熟悉一下用客户端发表博客了,也希望大家多多照顾 ...
- Entity Framework 5.0系列之自动生成Code First代码
在前面的文章中我们提到Entity Framework的"Code First"模式也同样可以基于现有数据库进行开发.今天就让我们一起看一下使用Entity Framework P ...
- 一个简单的、面向对象的javascript基础框架
如果以后公司再能让我独立做一套新的完整系统,那么我肯定会为这个系统再写一个前端框架,那么我到底该如何写这个框架呢? 在我以前的博客里我给大家展示了一个我自己写的框架,由于当时时间很紧张,做之前几乎没有 ...
- Android多线程分析之三:Handler,Looper的实现
Android多线程分析之三:Handler,Looper的实现 罗朝辉 (http://www.cnblogs.com/kesalin/) CC 许可,转载请注明出处 在前文<Android多 ...
- sublime 3 快捷键
来自(http://dengo.org/archives/970) Sublime text 3是我最喜欢的代码编辑器,每天和代码打交道,必先利其器,掌握基本的代码编辑器的快捷键,能让你打码更有效率. ...
- EF架构~为分组添加位运算聚合方法
回到目录 我们知道在Linq里的分组groupby可以对集合中一个或者多个字段进行分组,并对其中一个属性进行聚合,而Linq为我们提供了多种聚合方法,由aver,sum,count等,而在大叔权限体系 ...
- c#设计模式-观察者模式
Observer 与 Subject 互为耦合,但是这种耦合的双方都依赖于抽象,而不依赖于具体. 一.观察者模式 目的 我们都知道解决一个问题有N种解决方式,但在面向对象的设计中如何能做到“高内聚,低 ...
- 谷毅(WingKu)横空出世
天空划出一道彩虹,谷毅(WingKu)横空出世,这里的产品全由本人开发制作,如有雷同不胜荣幸,欢迎前往下载使用,如果有啥建议或者使用当中遇到什么问题,也可在此留言评论~OK,开张啦~!以后每个产品会以 ...
- Android 在线SDK更新 和谐被墙解决
Failed to fetch URL https://dl-ssl.google.com/android/repository/addons_list-2.xml, reason: Connect ...
