C#之面向对象

本文详细解析C#中的字符串操作方法,包括ToUpper(), ToLower(), Equals()等,深入探讨StringBuilder高效替代,以及面向对象的封装、继承和多态原理。同时介绍枚举、结构体和对象基础,以及堆栈关系、继承与多态应用实例。

一:字符串操作之常用方法

  1. ToUpper()
    将字符转换成大写形式,仅对字母有效。
    返回值是转换后的字符串。
    使用:字符串变量.方法名(); 例如:name.ToUpper();
  2. ToLower()
    将字符转换成小写形式,仅对字母有效。
    返回值是转换后的字符串。
    使用:字符串变量.方法名(); 例如:name.ToUpper();
  3. Equals()
    比较两个字符串是否相同。相同返回真,不相同返回假。
    使用:字符串变量.方法名(要比较的字符串变量); 例如:name.Equals(name2);
  4. Split()
    分割字符串。返回字符串类型的数组。
    使用:字符串变量.方法名(用于分割的字符数组); 例如:name3.Split(m_char);
  5. Substring()
    截取字符串。返回截取后的子串。
    使用:
    字符串变量.方法名(开始截取的位置);
    字符串变量.方法名(开始截取的位置,截取多长);
    例如:name.Substring(2); //从角标为 2 的位置,截取到最后;
    name.Substring(2,2); //从角标为 2 的位置,截取 2 个字符;
  6. IndexOf()
    查找某个字符串在字符串中第一次出现的位置。 返回所在的索引位置值。如果没有找到,返回-1。
    使用:name.IndexOf(“on”);
  7. LastIndexOf()
    查找某个字符串在字符串中最后一次出现的位置。 返回所在的索引位置值。如果没有找到,返回-1。
    使用:name.IndexOf(“on”);
  8. ·StartsWith() `
    判断是否以…字符串开始。如果是,返回真;如果不是,返回假。
    使用:字符串变量.方法名(子字符串);
    演示:name.StartsWith(“Mo”);
  9. EndsWith()
    判断是否以…字符串结束。如果是,返回真;如果不是,返回假。
    使用:字符串变量.方法名(子字符串);
    演示:name.EndsWith(“key”);
  10. Replace()
    字符串中的某个字符串替换成一个新的字符串。返回新的字符串。
    使用:字符串变量.方法名(旧字符串,新字符串);
    演示:name.Replace(“Mon”, “CODE”);
  11. Contains()
    判断某个字符串中是否包含指定的字符串。如果包含返回真,否则返回假。
    使用:字符串变量.方法名(子字符串);
    例如:name.Contains(“key”);
  12. Trim()
    去掉字符串中前后空格。返回处理后的字符串。
    使用:字符串变量.方法名();
    例如:address.Trim();
  13. TrimEnd()
    去掉字符串结束后的空格。返回处理后的字符串。
    使用:字符串变量.方法名();
    例如:address.TrimEnd();
  14. TrimStart()
    去掉字符串开始前的空格。返回处理后的字符串。
    使用:字符串变量.方法名();
    例如:address.TrimStart()
  15. IsNullOrEmpty()
    判断一个字符串是否为 Null 或者空。 如果为 null 或者空,返回真;否则返回假。 null 是不占内存空间的,而空字符串(“”)是占内存空间的。
    使用:string.方法名(字符串变量);
    例如:string.IsNullOrEmpty(name);
字符串的特点
  1. 字符串是引用类型 字符串的数据是存储在堆空间,在栈空间中存储了该数据的引用地址。
  2. 字符串是不可变的 当你给一个字符串变量重新赋值时,旧值并没有销毁,而是重新开辟一块空间来 存储新值。
  3. 字符串可以看做是是自读的字符数组
    使用字符串变量[下标]的形式可以取字符串中指定的字符。
    也可以使用 for 循环变量数组。
    字符串变量.Length;可以取得字符串字符的个数。

二:字符串操作之 StringBuilder

  1. 字符串的缺点
    当需要对一个字符串变量重复赋值时,在内存中会产生大量的垃圾数据信息。 当重复赋值的频率很高时,执行的效率就会降低。

StringBuilder是一个类。
SB 类型的变量是引用类型。 StringBuilder 类型的“字符串变量”,一直操作同一块内存空间,不会产生 垃圾数据,且执行效率远远高于 string 类型的字符串变量。

StringBuilder 使用方法

  1. 创建 StringBuilder 类型的变量
    StringBuilder sb = new StringBuilder(); //创建一个对象。
    注意:StringBuilder 依赖 System.Text 命名空间。
  2. 往 sb 中追加数据
    sb.Append(i); //追加数据。
    sb.ToString(); //将 sb 转成字符串形式。
  3. 清空 sb 中的数据
    sb.Clear(); //将 sb 清空。

StringBuilder 效率测试

  1. Stopwatch 类
    Stopwatch,秒表计时器,用来记录程序运行的时间。
    注意:Stopwatch 依赖 System.Diagnostics 命名空间。
  2. 创建 Stopwatch 类型对象
    Stopwatch sw = new Stopwatch();
    sw.Start(); //计时器开始。
    sw.Stop(); //计时器结束。
    sw.Elapsed; //开始到结束之间的时长。

三: 枚举类型

枚举定义在 namespace 下,这样在当前的命名空 间下,所有的类(class)都可以使用该枚举。

public enum 枚举名 {
   
   1,2,
	值 N
}
  1. 使用枚举类型
    枚举类型 变量名 = 枚举类型.值

四:结构体类型

  1. 什么是结构体?
    结构体:struct
    结构体是一种值类型,通常用于封装一些小型变量数据。
    结构体和我们后续要着重讲解的“对象”有很多类似和一样的地方,可以把结构 体当成一个迷你版的对象来使用。
  2. Untiy3D 中的结构体
    在 Unity3D 中提供了很多结构体类型的数据。
    比如:Vector3(三维向量), Color(颜色),Quaternion(四元数),Ray(射线)等等

声明结构体:

 public struct 结构体名称 
 {
   
    
 	public 数据类型 变量名;
  	public 数据类型 变量名;
   	public 数据类型 变量名; 
 }

使用结构体
创建结构体类型的变量:
结构体类型 结构体变量名 = new 结构体类型();
Person monkey = new Person();
给结构体赋值:
结构体变量名.变量名 = 值;
monkey.age = 27;
结构体取值:
结构体变量名.变量名;
monkey.age;

五:面向对象基础之类与对象

1. 类

在我们的程序中,描述某个具体的物体(比如苹果)特征,就是类(class)。 我们学习面向对象,其中最关键的一个概念“类”,就是用于描述事物特征的。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

神小夜

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值