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

关于之前多态的知识有一个口诀,很好理解里面的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. Demystifying ASP.NET MVC 5 Error Pages and Error Logging

    出处:http://dusted.codes/demystifying-aspnet-mvc-5-error-pages-and-error-logging Error pages and error ...

  2. 【源码笔记】Nop定时任务

    网站需要定时执行不同的任务,比如清理无效的数据.定时发送mail等,Nop的这个定时任务设计比较好,简单的说就是将所有任务相同的属性持久化,具体的执行通过继承接口来实现. 持久化对象:Schedule ...

  3. 基础调试命令 - u/ub/uf

    在调试过程中难免会遇到需要反编译代码来分析逻辑的时候,在windbg中,需要反编译代码就要用到u/ub/uf这三个命令.本文这里分别介绍这三个命令各自的用途. 以下是一个quick sort的实例代码 ...

  4. 开启Ubuntu root 远程登录

    很早就遇到这问题了,但是今天才想到解决.也就是说Ubuntu在安装的时候,远程SSH登录是禁止的.每次你必须使用普通的用户SSH远程登录以后,然后su切换到root这样,对于强迫症的我实在是很难容忍的 ...

  5. 302 Moved Temporarily

    这个就是表示 重定向!! 不过,302在不同HTTP协议下的状态信息不同. Moved temporarily (redirect) 你所连接的页面进行了Redirect Found 类似于301,但 ...

  6. 我也说百度和google

    对于程序员,最好的老师恐怕还是百度或者google或一些专业的it社区.网站了罢! 之前曾听到这样的一句话, 文艺程序员用Google Scholar/Scirus/stackoverflow.普通程 ...

  7. 大叔也说Xamarin~Android篇~监听返回键,单击返回某个webView,双击退出

    回到目录 这个操作在原生android里是很容易实现的,在xamarin里也不难,在activity里有方法OnKeyDown,我们只需要重写一下就可以了,然后通过webView重新加载到要返回的页面 ...

  8. 知方可补不足~Sqlserver中的几把锁和.net中的事务级别

    回到目录 当数据表被事务锁定后,我们再进行select查询时,需要为with(锁选项)来查询信息,如果不加,select将会被阻塞,直到锁被释放,下面介绍几种SQL的锁选项 SQL的几把锁 NOLOC ...

  9. 05- Shell脚本学习--函数

    函数可以让我们将一个复杂功能划分成若干模块,让程序结构更加清晰,代码重复利用率更高.像其他编程语言一样,Shell 也支持函数.Shell 函数必须先定义后使用. 函数定义 Shell 函数的定义格式 ...

  10. Atitit usrQBK1600 技术文档的规范标准化解决方案

    Atitit usrQBK1600 技术文档的规范标准化解决方案 1.1. Keyword关键词..展关键词,横向拓展比较,纵向抽象细化拓展知识点1 1.2. 标题必须有高大上词汇,参考文章排行榜,1 ...