30天C#基础巩固------this,base,string中的方法,StringBuilder性能

简介: 30天C#基础巩固------this,base,string中的方法,StringBuilder性能

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

 

关于之前多态的知识有一个口诀,很好理解里面的override和new,virtual关键字。


“new则隐藏,over重写,隐藏看类型,重写只管新”


面向对象的三大特征:封装,继承,多态。


非面向对象的特征---静态

679140-20160522230936513-455514983.png

静态一般的是使用的是方法,很少有字段。


下面是修饰符的图片,关于修饰符这个要在项目中使用,慢慢的理解。


679140-20160522230937326-1859588192.png


一: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:构造方法


679140-20160522230938701-1140069343.png

上面是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等)

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();


679140-20160522230941888-698044469.png

删除

-->


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);


679140-20160522230943076-1115549824.png


-->

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:


<a href="http://images2015.cnblogs.com/blog/679140/201605/679140-20160522230944451-173435674.png" rel="noopener"><img style="background-image: none; padding-top: 0; padding-left: 0; display: inline; padding-right: 0; border: 0" title="image" src="https://images2015.cnblogs.com/blog/679140/201605/679140-20160522230945248-1674191967.png" alt="image" width="518" height="137" border="0"></a>


我们可以使用Split里面的参数就可以把多余的空格去掉。



679140-20160522230946794-604168326.png


现在就把里面的空格去掉了,a里面存取了4个string类型。


-->两个字符串的比较


679140-20160522230948279-1153155335.png


三: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();


679140-20160522230948904-703417304.png


这里要是把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();



679140-20160522230950169-271290447.png



这里我换成了100000性能还是这么的6.




目录
相关文章
|
5月前
|
编解码 Java 开发者
Java String类的关键方法总结
以上总结了Java `String` 类最常见和重要功能性方法。每种操作都对应着日常编程任务,并且理解每种操作如何影响及处理 `Strings` 对于任何使用 Java 的开发者来说都至关重要。
364 5
|
8月前
|
Java
介绍String.format()方法中的格式占位符用法。
通过综合使用它们,可以在Java中构造非常具体和高度定制的输出格式。这对于输出报道、创建用户界面或者任何需要精确控制输出格式的场合都非常有用。记住,当使用格式化方法时,需要确保提供的输入参数与占位符类型匹配,否则会抛出 java.util.IllegalFormatException。
946 0
|
Java
【编程基础知识】(讲解+示例实战)方法参数的传递机制(值传递及地址传递)以及String类的对象的不可变性
本文深入探讨了Java中方法参数的传递机制,包括值传递和引用传递的区别,以及String类对象的不可变性。通过详细讲解和示例代码,帮助读者理解参数传递的内部原理,并掌握在实际编程中正确处理参数传递的方法。关键词:Java, 方法参数传递, 值传递, 引用传递, String不可变性。
335 1
【编程基础知识】(讲解+示例实战)方法参数的传递机制(值传递及地址传递)以及String类的对象的不可变性
|
C# UED SEO
C# 异步方法async / await任务超时处理
通过使用 `Task.WhenAny`和 `Task.Delay`方法,您可以在C#中有效地实现异步任务的超时处理机制。这种方法允许您在指定时间内等待任务完成,并在任务超时时采取适当的措施,如抛出异常或执行备用操作。希望本文提供的详细解释和代码示例能帮助您在实际项目中更好地处理异步任务超时问题,提升应用程序的可靠性和用户体验。
672 3
|
JSON 程序员 C#
使用 C# 比较两个对象是否相等的7个方法总结
比较对象是编程中的一项基本技能,在实际业务中经常碰到,比如在ERP系统中,企业的信息非常重要,每一次更新,都需要比较记录更新前后企业的信息,直接比较通常只能告诉我们它们是否指向同一个内存地址,那我们应该怎么办呢?分享 7 个方法给你!
603 2
|
存储 C#
【C#】大批量判断文件是否存在的两种方法效率对比
【C#】大批量判断文件是否存在的两种方法效率对比
487 1
|
JavaScript 前端开发 开发者
|
9月前
|
存储 编译器 C语言
关于string的‘\0‘与string,vector构造特点,反迭代器与迭代器类等的讨论
你真的了解string的'\0'么?你知道创建一个string a("abcddddddddddddddddddddddddd", 16);这样的string对象要创建多少个对象么?你知道string与vector进行扩容时进行了怎么的操作么?你知道怎么求Vector 最大 最小值 索引 位置么?
222 0
|
12月前
|
缓存 安全 Java
《从头开始学java,一天一个知识点》之:字符串处理:String类的核心API
🌱 **《字符串处理:String类的核心API》一分钟速通!** 本文快速介绍Java中String类的3个高频API:`substring`、`indexOf`和`split`,并通过代码示例展示其用法。重点提示:`substring`的结束索引不包含该位置,`split`支持正则表达式。进一步探讨了String不可变性的高效设计原理及企业级编码规范,如避免使用`new String()`、拼接时使用`StringBuilder`等。最后通过互动解密游戏帮助读者巩固知识。 (上一篇:《多维数组与常见操作》 | 下一篇预告:《输入与输出:Scanner与System类》)
321 11
课时14:Java数据类型划分(初见String类)
课时14介绍Java数据类型,重点初见String类。通过三个范例讲解:观察String型变量、&quot;+&quot;操作符的使用问题及转义字符的应用。String不是基本数据类型而是引用类型,但使用方式类似基本类型。课程涵盖字符串连接、数学运算与字符串混合使用时的注意事项以及常用转义字符的用法。
343 9