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 ...
随机推荐
- Angular Module声明和获取重载
module是angular中重要的模块组织方式,它提供了将一组内聚的业务组件(controller.service.filter.directive…)封装在一起的能力.这样做可以将代码按照业务领域 ...
- 使用mybatis访问sql server
原创文章转载请注明出处:@协思, http://zeeman.cnblogs.com mybatis作为一种半自动化的ORM工具,可以提供更大的灵活性,逐渐受到社区的欢迎. 官方下载地址是:https ...
- Java枚举类型getClass和getDeclaringClass区别(未完待续)
Java中的枚举类型有getClass()和getDeclaringClass()两个方法,在通常情况下这两个方法返回的类型一样,在某些场景下会有不同的表现 参照 http://stackoverfl ...
- Windows进程通信 -- 共享内存(1)
共享内存的方式原理就是将一份物理内存映射到不同进程各自的虚拟地址空间上,这样每个进程都可以读取同一份数据,从而实现进程通信.因为是通过内存操作实现通信,因此是一种最高效的数据交换方法. 共享内存在 W ...
- java source not found
今天的挑战是,为什么与源码明明放在本机,调试的时候却说source not found呢? 这个是因为,我重新建立了debug,然后没有选择对应的项目. 另外一个问题是,如果给底层的jar附上源码呢?
- 将不确定变为确定~DateTime.MinValue和MaxValue引发的异常
回到目录 问题描述: SqlDateTime 溢出.必须介于 1/1/1753 12:00:00 AM 和 12/31/9999 11:59:59 PM 之间 概念相关 .Net中的DateTime结 ...
- jquerymobile仿微信 - 01
jquerymobile仿微信 - 01 jquerymobile的组件感觉不咋地哇 本地调试最好是开一个web server,不然数据访问会有问题 <div data-role="p ...
- 玩转Django的POST请求 CSRF
玩转Django的POST请求 CSRF 不少麻油们玩django都会碰到这个问题,POST请求莫名其妙的返回 403 foribidden,希望这篇博文能解答所有问题 三种方法 To enable ...
- 第七节:Class与Style绑定
1.绑定class,v-bind:class 简写为::class 对象方式: <!-- 绑定一个class对象,也可以绑定data中的对象--> <span v-bind:cla ...
- 利用CSS3 clip-path裁剪各种图形。
'clip-path'是css3的一个强大属性,我们可以利用它来绘制各种各样的图形,当然不只是这些,接下来一起看看它的强大功能吧. 首先介绍的是clip-path里面的polygon功能,我们可以通过 ...
