C#核心知识回顾——4.object中的方法、String、StringBuilder

news2024/11/24 19:07:51

1.object中的方法

object中的静态方法:

静态方法Equals判断两个对象是否相等:
    最终的判断权,交给左侧对象的Equals方法,
不管值类型引用类型都会按照左侧对象Equals方法的规则来进行比较

静态方法Reference Equals
    比较两个对象是否是相同的引用,主要是用来比较引用类型的对象。
值类型对象返回值始终是false。

//值类型Equals方法比较
        Debug.Log(object.Equals(1,1));
        //引用类型Equals方法比较
        Test t = new Test();
        Test t2 = new Test();
        //引用类型比较的是对应的路径是否一致
        Debug.Log(object.Equals(t, t2));

        //ReferenceEquals只用来比较引用类型对象。
        Debug.Log(object.ReferenceEquals(t, t2));

object中的成员方法:

普通方法GetType
    该方法在反射相关知识点中是非常重要的方之之后我们会具体的讲解这里返回的Type类型。
该方法的主要作用就是获取对象运行时的类型Type,
通过Type结合反射相关知识点可以做很多关于对象的操作。

普通方法Memberwiseclone
    该方法用于获取对象的浅拷贝对象,口语化的意思就是会返回一个新的对象,
但是新对象中的引用变量会和老对象中一致。

class Test {
    public int i = 0;
    public Test2 t2 = new Test2();
    //将自身MemberwiseClone方法传递出去
    public Test Clon()
    {
        return MemberwiseClone() as Test;
    }
}
class Test2
{
    public int i = 0;
}
public class GetInfo : MonoBehaviour
{
    private void Start()
    {
        Test t = new Test();
        Test test = t.Clon();        
        Debug.Log("t.i " + t.i);
        Debug.Log("t.t2.i " + t.t2.i);
        Debug.Log("test.i " + test.i);
        Debug.Log("test.t2.i " + test.t2.i);
        Debug.Log("--------------------");
        test.i = 10;
        test.t2.i = 10;
        Debug.Log("t.i " + t.i);
        Debug.Log("t.t2.i " + t.t2.i);
        Debug.Log("test.i " + test.i);
        Debug.Log("test.t2.i " + test.t2.i);
    }   
}

object中的虚方法:
虚方法Equals
        默认实现还是比较两者是否为同一个引用,即相当于Reference Equals。但是微软在所有值类型的基类system.Value Type中重写了该方法,用来比较值相等。我们也可以重写该方法,定义自己的比较相等的规则

虚方法GetHashCode
        该方法是获取对象的哈希码(一种通过算法算出的,表示对象的唯一编码,不同对象哈希码有可能一样,具体值根据哈希算法决定),我们可以通过重写该函数来自己定义对象的哈希码算法,正常情况下,我们使用的极少,基本不用。

虚方法Tostring(非常常用)
        该方法用于返回当前对象代表的字符串,我们可以重写它定义我们自己的对象转字符串规则,该方法非常常用。当我们调用打印方法时,默认使用的就是对象的To string方法后打印出来的内容。

2.String

字符串指定位置获取:

//字符串本质是char数组
        string str = "123";
        Debug.Log(str[0]);//1

字符串拼接:

 string str = "123";
        str = string.Format("{0}{1}", str, 123);
        Debug.Log(str);//123123

正向查找字符位置:

string str = "娃哈哈施工队";
        int index = str.IndexOf("哈");
        int li = str.IndexOf("里");
        Debug.Log(index);//1
        Debug.Log(li);//-1

找到了返回第一个符合的索引,找不到返回-1。

反向查找字符位置:

string str = "娃哈哈施工队";
        int index = str.LastIndexOf("哈");
        Debug.Log(index);//2

字符中有多个目标字符,想要获取后面的字符,可以使用LastIndexOf。

移除指定位置及后面的字符:

 string str = "娃哈哈施工队";
        //直接remove不会删除原字符,只会返回一个新的字符
        //str.Remove(3);
        str = str.Remove(4);
        Debug.Log(str);//娃哈哈施
        //在指定位置删除指定个字符
        str = str.Remove(2,1);//索引2开始删除一个字符
        Debug.Log(str);//娃哈施


替换指定字符审:

string str = "娃哈哈施工队";
        str = str.Replace("哈","嘿");
        Debug.Log(str);//娃嘿嘿施工队

大小写转换:

string str = "sfsdfs";
        str = str.ToUpper();
        Debug.Log(str);//SFSDFS

        str= str.ToLower();
        Debug.Log(str);//sfsdfs

字符串截取:

string str = "娃哈哈施工队";
        //截取从指定位置之后的字符
        str = str.Substring(2);
        Debug.Log(str);//哈施工队
        str = str.Substring(1,1);
        Debug.Log(str);//施

字符串切割:

 string str = "娃哈哈.施工队";
        //截取从指定位置之后的字符
        string[] ss = str.Split('.');
        Debug.Log(ss[0]);//娃哈哈

 string[] str = { "h", "e", "l", "l", "o" };
        str = str.Reverse().ToArray();
        for (int i = 0; i < str.Length; i++)
        {
            Debug.Log(str[i]);
        }

3.StringBuilder

C#提供的一个用于处理字符串的公共类
主要解决的问题是:
1.修改字符串而不创建新的对象,需要频繁修改和拼接的字符串可以使用它,可以提升性能
2.使用前需要引用命名空间

String Builder存在一个容量的问题,每次往里面增加时会自动扩容

StringBuilder stringBuilder = new StringBuilder("1111");
        //获得容量
        Debug.Log(stringBuilder.Capacity);//16 默认初始化给定了16个长度
        //获得字符长度
        Debug.Log(stringBuilder.Length);//真实长度

增删改查:

  StringBuilder str = new StringBuilder("1111");
        //增
        str.Append("222");
        str.AppendFormat("{0}{1}", 15551, 254454452);
        Debug.Log(str);
        Debug.Log(str.Capacity);//超出首次限定的长度,会重新指定长度,翻倍到32
        //插入
        str.Insert(1, "999");
        Debug.Log(str);//1999……
        //删
        str.Remove(0, 1);//从0索引开始删除1个元素
        //清空
        //str.Clear();
        //查
        Debug.Log(str[2]);
        //改
        str[0] = 'A';
        //替换
        str.Replace("9", "B");
        Debug.Log(str);
        //判断相等
        if (str.Equals("123"))
        {
            Debug.Log("1");
        }

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/703024.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

分布式操作系统期末复习(辽宁大学王龙主讲)

目录 一、题目 1.1 简答题 1.2 综合题 二、题目答案 2.1 简答题目答案 2.2 综合题目答案 三、期末题型分值分布 3.2 题型和分值 一、题目 1.1 简答题 1什么是中间件 22.1&#xff08;22年期末考试第一题&#xff09; 2 什么是名称解析 3 描述一下客户和服务器之间使…

爬虫入门指南(1):学习爬虫的基础知识和技巧

文章目录 爬虫基础知识什么是爬虫&#xff1f;爬虫的工作原理爬虫的应用领域 爬虫准备工作安装Python安装必要的库和工具 网页解析与XPath网页结构与标签CSS选择器与XPathXpath 语法XPath的基本表达式&#xff1a;XPath的谓语&#xff08;Predicate&#xff09;&#xff1a;XPa…

实测视频!为什么独立比贴片IMU更适合智能驾驶?

在汽车智能化这场行业变革中&#xff0c;作为智能驾驶的标配&#xff0c;高精度定位系统已成L2级及以上智能驾驶“照进现实”进程中四两拨千斤的存在。 惯性测量单元IMU因其工作不依赖包括卫星在内的外界信号&#xff0c;已是智能汽车高精度定位系统的核心元器件。然而行业对于…

2023年跨境物流行业研究报告

第一章 行业概况 跨境物流行业是指那些提供将货物从一个国家运输到另一个国家的服务的公司。这些服务可能包括运输、仓储、包装、分拣、清关和货物跟踪等。跨境物流行业是全球贸易的重要组成部分&#xff0c;它使得商品可以从生产地运输到全球各地的消费者手中。 图 物流运输…

Nmap命令使用

该命令可以扫描目标地址所开放的端口地址&#xff0c;nmap 扫描器主要基本功能有三个&#xff0c;一是探测主机是否在线、其次是扫描主机端口、嗅探所提供的网络服务&#xff0c;还可以推断主机所用的操作系统。也可以深入探测 UDP 或者 TCP 端口&#xff0c;直至主机所使用的操…

华为项目管理认证--东方智慧,能力革新︱华为全球培训中心项目管理认证资深架构师张全军

华为全球培训中心项目管理认证资深架构师张全军先生受邀为由PMO评论主办的2023第十二届中国PMO大会演讲嘉宾&#xff0c;演讲议题&#xff1a;华为项目管理认证——东方智慧&#xff0c;能力革新。大会将于8月12-13日在北京举办&#xff0c;敬请关注&#xff01; 议题简要&…

Windows上安装Redis教程

Windows上安装Redis教程 一、下载 Redis1. 下载 Redis 压缩包2. 把下载好的压缩包移动到自己的安装目录下 二、安装 Redis三、配置 Redis3.1 配置 Redis 环境变量3.2 配置 Redis 后台服务 一、下载 Redis 1. 下载 Redis 压缩包 我这里下载的是 Redis 5.0 下载地址&#xff1a;…

6.30黄金双线收官打响保卫战,今日多空如何布局?

近期有哪些消息面影响黄金走势&#xff1f;今日黄金多空该如何研判&#xff1f; ​黄金消息面解析&#xff1a;金价周四收复盘中部分失地&#xff0c;在一系列强劲美国经济数据推动金价短暂跌破1900美元关键心理位后&#xff0c;投资者逢低买入。美国上周初请失业金人数创20个…

Python 基本数据类型(三)

文章目录 每日一句正能量数值运算数值类型实例String&#xff08;字符串&#xff09; 每日一句正能量 人的相处&#xff0c;靠的是真心&#xff0c;不是套路。合得来的人&#xff0c;坦诚相待&#xff0c;合不来的人&#xff0c;客气寒暄&#xff1b;谁也别给谁冷脸看&#xff…

文章ACCEPT之后填写内容教程-Springer-Verlag即施普林格

目录 确认通讯作者邮箱或者直接登录您的投稿官网进行确认 有的大学机构是能免费出版的&#xff1a;清华&#xff0c;北大都行 缴纳APC和订阅模式的区别 签订出版协议 英文的作者顺序是没有先后的&#xff0c;后期校稿自己可以调节 选择不彩印&#xff1a;彩印费用也是比较…

来自我的B站数码up主推荐

本人在什么值得买发过&#xff0c;现在只不过是为了让账号看起来更丰盈一点&#xff0c;现在再发一次。 我写下这篇文章的目的&#xff0c;就是陶冶情操啦 首先此文章只代表个人观点&#xff0c;我的想法是比较喜欢数码&#xff0c;所以下我们可以从以下入手。 科技美学&…

华为OD机试真题 Python 实现【基站维修工程师】【2023Q1 200分】,附详细解题思路

目录 一、题目描述二、输入描述三、输出描述四、解题思路五、Python算法源码六、效果展示1、输入2、输出 一、题目描述 小王是一名基站维护工程师&#xff0c;负责某区域的基站维护。 某地方有n个基站&#xff08;1<n<10&#xff09;&#xff0c;已知各基站之间的距离s…

C++ 异常处理

异常是程序在执行期间产生的问题。C 异常是指在程序运行时发生的特殊情况&#xff0c;比如尝试除以零的操作。 异常提供了一种转移程序控制权的方式。C 异常处理涉及到三个关键字&#xff1a;try、catch、throw。 throw: 当问题出现时&#xff0c;程序会抛出一个异常。这是通…

运动新风尚,听歌不用线——南卡OE真无线骨传导耳机

以往在选择运动耳机时&#xff0c;通常会选择骨传导耳机&#xff0c;骨传导耳机有着传统入耳式耳机以及头戴式耳机所不具备的优势。例如在运动稳定性以及安全性方面&#xff0c;骨传导耳机则更胜一筹&#xff0c;它在使用时&#xff0c;双耳是开放的&#xff0c;首先它不会有传…

0. 深度生成模型-基于得分的生成模型

深度生成模型-基于得分的生成模型 1. 概述1.1. 深度生成模型1.2. 本文内容 2. 基于得分的生成模型2.1. 分数匹配2.1.1. 去噪分数匹配2.1.2. 切片分数匹配 2.2. 朗之万动力学采样 3. 基于分数的生成式建模所面临的挑战3.1. 流形假说3.2. 低数据密度区域3.2.1 与分数匹配的分数估…

redis运维

redis运维 1.主从复制 互联网三高架构&#xff1a;高并发、高性能、高可用 单机redis的风险与问题&#xff1f; 问题1.机器故障 现象&#xff1a;硬盘故障、系统崩溃本质&#xff1a;数据丢失&#xff0c;很可能对业务造成灾难性打击结论&#xff1a;基本上会放弃使用redis.…

前端人必须掌握的抓包技能

1. 前言 时隔 3 年&#xff0c;重新接触了移动端 h5 页面开发&#xff0c;上一次还是大四实习。这一次是 hybrid 开发&#xff0c;涉及到 h5 页面与原生 app 的交互&#xff0c;h5 页面需要与原生打通登录态&#xff0c;以及调用原生app 的接口&#xff0c;比如调用原生相机进…

牙科口腔小程序开发 用科技呵护口腔健康

随着人们生活经济水平的提高&#xff0c;对于健康也更加重视&#xff0c;牙科口腔是重要的一个方面&#xff0c;尤其是青少年因为饮食习惯的问题尝尝需要看牙科&#xff0c;口腔科等&#xff0c;传统的牙科口腔医院服务流程繁琐&#xff0c;给用户造成了极大困扰。随着互联网技…

企业实施BI的时机和选择考虑

如果你的企业还只处在初创阶段&#xff0c;但又需要为日后的BI数据化做准备时。在数聚股份看来出于成本考虑&#xff0c;你可以先用Excel梳理好业务核心数据&#xff0c;聚焦核心指标&#xff0c;接着发展用户&#xff0c;积累业务数据。 当你的Excel报表已经无法承载你的业务量…

kafka3.x 入门 安装(一)

一、下载地址 http://kafka.apache.org/downloads.html 二、 zookeeper安装教程 https://blog.csdn.net/weixin_43205308/article/details/130426019 三、解压 这里使用的是kafka_2.12-3.0.0.tgz tar -zvxf kafka_2.12-3.0.0.tgz四、修改配置 进入到安装路径的config文件夹下…