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.




目录
相关文章
|
6天前
|
数据安全/隐私保护
作用域通信对象:session用户在登录时通过`void setAttribute(String name,Object value)`方法设置用户名和密码。点击登录按钮后,跳转到另外一个页面显示用户
该博客文章通过示例演示了如何使用session对象的`setAttribute`和`getAttribute`方法在不同页面间传递和显示用户的用户名和密码信息,并说明了如何设置会话的有效期。
作用域通信对象:session用户在登录时通过`void setAttribute(String name,Object value)`方法设置用户名和密码。点击登录按钮后,跳转到另外一个页面显示用户
|
21天前
|
Java
Java中将保留四位小数的Double转换为String的方法详解
选择合适的方法,可以使代码更加简洁、高效,同时也能满足不同场景下的需求。
21 5
|
4天前
|
Dragonfly Dart NoSQL
Dart ffi 使用问题之在Dart中调用String的toNativeUtf8方法时有什么是需要注意的
Dart ffi 使用问题之在Dart中调用String的toNativeUtf8方法时有什么是需要注意的
|
5天前
|
C#
C# async await 异步执行方法
C# async await 异步执行方法
9 0
|
28天前
|
XML Java API
List与String相互转化的方法有哪些
摘要:本文概述了Java中List转换为String及反之的多种策略。使用`String.join()`可简洁地连接List元素;`StringBuilder`提供灵活控制;Java 8 Stream API收集器简化操作;Apache Commons Lang3的`StringUtils.join()`和Guava的`Joiner.on()`支持外部库的高效转换。
|
7天前
|
C# 图形学
小功能⭐️C#控制小数点后位数的方法
小功能⭐️C#控制小数点后位数的方法
|
14天前
|
C#
WPF/C#:数据绑定到方法
WPF/C#:数据绑定到方法
23 0
|
1月前
|
安全 Java 索引
带你快速掌握Java中的String类和StringBuffer类(详解常用方法 | 区别 )
带你快速掌握Java中的String类和StringBuffer类(详解常用方法 | 区别 )
|
2月前
|
存储 Java 数据库
解析和使用String数组的方法
解析和使用String数组的方法
|
3月前
|
开发框架 前端开发 .NET
C#编程与Web开发
【4月更文挑战第21天】本文探讨了C#在Web开发中的应用,包括使用ASP.NET框架、MVC模式、Web API和Entity Framework。C#作为.NET框架的主要语言,结合这些工具,能创建动态、高效的Web应用。实际案例涉及企业级应用、电子商务和社交媒体平台。尽管面临竞争和挑战,但C#在Web开发领域的前景将持续拓展。
150 3