这里主要是记录下自己学习笔记,希望有个地方在以后可以看到自己走过的路。

关于之前多态的知识有一个口诀,很好理解里面的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性能的更多相关文章

  1. java基础解析系列(一)---String、StringBuffer、StringBuilder

    java基础解析系列(一)---String.StringBuffer.StringBuilder 前言:本系列的主题是平时容易疏忽的知识点,只有基础扎实,在编码的时候才能更注重规范和性能,在出现bu ...

  2. Java09-java语法基础(八)java中的方法

    Java09-java语法基础(八)java中的方法 一.方法(函数/过程):是一个程序块,可以完成某种功能 1.java中方法的定义格式 [访问控制修饰符]  返回值类型  方法名(参数列表){ 方 ...

  3. C++中 string 中的方法的使用详解

    string 字符串在所有的语言中都非常重要,c++也不例外,接下来我们将介绍string中的常用方法 1. size() 和 length() 函数 : 他们返回字符串的真实长度,且不会因为空格而截 ...

  4. java String 中 intern方法的概念

    1. 首先String不属于8种基本数据类型,String是一个对象. 因为对象的默认值是null,所以String的默认值也是null:但它又是一种特殊的对象,有其它对象没有的一些特性. 2. ne ...

  5. String中concat方法小记

    介绍String中的concat方法使用: 日常开发中,经常对字符串进行处理,之前碰到多个字符串拼接,要么使用stringBuilder,要么使用StringBuffer,再或者是直接多个String ...

  6. String中intern方法的作用

    前言 读完这篇文章你可以了解,String对象在虚拟机内存中的存放,intern的作用,这么多String对象的创建到底有什么区别,String 创建的对象有几个!! 正题 先科普几个知识点1.常量池 ...

  7. Java基础-重写-子类重写父类中的方法后执行情况

    代码 public class Test { public static void main(String[] args) { Shape shape = new Circle(); System.o ...

  8. Javascript ----字符串(String)中的方法

    涉及字符串时,常用到的几个方法... --------------------------------------------------------------------------------- ...

  9. String中重要方法与字段

    下列这段代码已全部包含了我要写的String类中重要的字段: //StringMisc.java// This program demonstrates the length, charAt and ...

随机推荐

  1. phpmyadmin Wrong permissions on configuration file, should not be world writable!

    巴拉巴拉,实际场景是这样,因为有需要,所以想用django 做个rest服务给其他平台提供服务,发现以前正常的页面都无法运行,奇怪发现有一个页面提示连接不上mysql 难道mysql挂了,打开phpm ...

  2. Unable to locate secure storage module异常的解决方案

    org.eclipse.equinox.security.storage.StorageException: Unable to locate secure storage module 该异常同样是 ...

  3. Syncfusion 复选框 ComboBoxAdv

    XAML: <syncfusion:GridTemplateColumn.EditTemplate> <DataTemplate DataType="viewModel:C ...

  4. [.net 面向对象编程基础] (13) 面向对象三大特性——多态

    [.net 面向对象编程基础] (13) 面向对象三大特性——多态 前面两节,我们了解了面向对象的的封装和继承特性,面向对象还有一大特性就是多态.比起前面的封装和继承,多态这个概念不是那么好理解.我们 ...

  5. 免费打造自己的个人网站,免费域名、免费空间、FTP、数据库什么的,一个不能少,没钱,也可以这么任性

    作为一名程序猿,拥有自己的个人网站,是一件多么有逼格的事~~至于个人网站的好处嘛?那是多的说都说不完啊~~例如我们可以放自己的作品,展示自己的风采,放自己女神的照片(女神看到后会怎么样,自己想吧,哈哈 ...

  6. 在.net中使用aquiles访问Cassandra(四)

    数据的持久化我们都已经完成了,和所有应有程序一样,最重要的是要向用户展示数据.下面我们就推出这部分代码,读取任意行任何列: public IList<TRowResult> Execute ...

  7. WKInterfaceImage 无法更新图片的问题

    最近涉及到AppleWatch的相关项目,但有个奇怪问题无法解决,而且无法理解: 根据不同的用户操作,需要修改播放器的专辑图片. 不知道跟我的项目需求是不是有关系:我需要轮询共享空间,以拿取同步数据, ...

  8. Yii Model中添加默认搜索条件

    在查询中增加条件 public function defaultScope() { return array( 'condition' => " is_deleted = 0" ...

  9. Android开发学习之路-使用AsyncTask进行异步操作

    通常情况下,我们要实现异步操作,也就是在子线程进行耗时操作比如下载或者加载图片等,然后在UI(主)线程中更新UI,使用的是Handler和Message来进行异步的实现,但是,谷歌官方在Android ...

  10. Atitit  代理与分销系统(1)  子代理 充值总额功能设计概览 sum() groubpy subagt

    Atitit  代理与分销系统(1)  子代理 充值总额功能设计概览 sum() groubpy subagt Keyword 分组与聚合操作. 一个for做分组...里面的做聚合... 数据g操作查 ...