C#常用类

一、C#常用类

C#中有一些具有特定功能的类,例如操作字符串的类、用于操作日期的类、生成随机数的类

字符串的基本特征
1、字符串的不可变性
字符串对象一旦创建,就无法对其进行修改。
.NET框架的底层提供了一种机制,当一个字符串已经被创建,那么以后每次创建相同值的字符串时都会直接引用它的地址值,而无需为自己的值开辟新的内存空间,这种机制被称为字符串拘留池机制
2、string数据类型是一个类,而其他数据类型基本都是机构(struct)
3、对一个字符串变量赋值后,其实那个变量也就是new后的实例对象。(也就是说string这个类可以不通过new关键字来实例化一个对象,直接赋值也就是对其实例化后的对象赋值)

字符串与字符串数组
可以将字符串看作一个char类型的只读数组,即字符数组。可以通过Length属性来获取字符串长度

二、String和string异同及String类的构造方法

1、String和string异同
string类型是C#语言中用来表示字符串的类型,而String类型是.NET Framework通用类型系统中用来表示字符串的类型。在程序开发过程中,这两种类型之所以都能表示字符串,是因为程序编译时,C#语言中的string类型会被编译成.NET Framework通用类型系统的String类型。
string str=“”;
string str=String.Empty;
这两种空字符串的定义是一样的。

三、String类的静态方法

1、Compare()方法
功能:用于比较两个字符串是否相等,该方法有两个string类型参数,用于接收进行对比的字符串,如果第一个字符串大于第二个字符串,则返回一个大于0的int整数1;如果两个字符串相同,则返回0;若第一个字符串小于第二个字符串,则返回一个小于0的int整数-1。(字母大于数字,同一个字母大写大于小写,可以设置第三个参数为true,表示忽略大小写)

String.Compare(str1, str2,true)

2、Format()方法
Format()方法的作用是格式化字符串,它的用法与Console.WriteLine()非常类似,不同的是Format()方法只能格式化字符串,而Console.WriteLine()可以输出。

string res = String.Format("字符串{0}包含{1}个字符", str, str.Length);

3、IsNullOrEmpty()方法
IsNullOrEmpty()方法用来判断字符串是否为空或长度是否为0,当字符串为空或者长度为0时,返回值为true,否则返回false。

4、Join()方法
Join()方法的作用是使用指定的字符串,将字符串数组中的元素连接起来。

  string[] strs = { "字符串", "使用竖线", "连接" };string res = String.Join("|", strs);

四、String类的实例方法

除静态方法外,String类中还提供了一些方法,这些方法需要先创建实例对象才能被调用,即String类的实例方法。

1、Contains()方法
Contains()方法用于判断一个字符串中是否包含指定字符串。常用格式:
bool Contains(string str)

注意赋值也就是实例化后的对象if (str1.Contains(str2)){Console.WriteLine("str2包含在str1中");}else{Console.WriteLine("str1不包含str2");}

2、EndsWith()方法
判断当前字符串是否以指定字符串结尾。常用格式:
bool EndsWith(string str)

           string input = Console.ReadLine();if (input.EndsWith(".mp3")){Console.WriteLine("文件格式正确");}else{Console.WriteLine("输入文件不是mp3格式");}

3、IndexOf()方法
IndexOf()方法用于返回指定字符或字符串在字符串中的索引,在查找过程中,从字符串左边开始查找,如果找到第一个,便返回对应的索引且方法结束,否则返回-1。即是返回首次出现的位置,没有找到返回-1。
常用格式:
int IndexOf(char ch)

            string str = "ab222eeeefg";//查找第一个'e'字符的位置int index = str.IndexOf("e");

4、Split()方法
将字符串以某种字符分隔。
常用格式:
string[] Split(char ch)

注意,使用Split时,需要被分割的字符串有分割符string str = "I have a dream";string[] strs = str.Split(' ');
例如: string str2="I/also/have/a/dream ";string[] strs2=str.Split("/");

5、Substring()方法
Substring()方法的作用是对字符串进行截取(即取子字符串)。
常用格式:
string Substring(int index,int Length)
如果参数Length没有,则表示取后面所有的;如果Length超过字符串后面的长度,则会报错。

 string path = "D:\\2023年\\Chasrp\\日志.docx";int index = path.IndexOf(".");string fileName = path.Substring(index + 1);

6、ToCharArray()方法
ToCharArray()方法的作用是将字符串转换成一个字符数组。
常用格式:
char[] ToCharArray()

 //将字符串转换成字符数组char[] chs = str.ToCharArray();

7、ToUpper()、ToLower()方法
ToUpper()方法的作用是将字符串中所有的英文字母都变成大写的。ToLower()方法是将字符串中所有的英文字母都变成小写的。
8、Trim()方法
Trim()方法的作用是用来去除字符串两端的连续空格。

五 高效的StringBuilder类

1、StringBuilder类
使用的原因:在程序开发中,经常会使用大量的字符串,由于字符串是不可变的,因此在代码中频繁的拼接字符串会创建多余的对象,从而影响程序的性能。

作用:C#中提供了StringBuilder类,它和String类都用来操作字符串。与String类不同的是,StringBuilder类创建的字符串的长度是可以改变的,它类似一个字符容器,当在其中添加或删除字符时,并不会产生新的StringBuilder对象,因此可以让字符串的拼接操作变的更加高效。

stringBuilder Append(string str)  将字符串添加到StringBuilder对象的末尾
stringBuilder Insert(int offset ,string str) 将字符串中的offset位置插入字符串str
stringBuilder Replace(string str1,string str2) 在StringBuilder对象中替换指定的字符或字符串序列
stringBuilder Remove(int index,int length) 将字符串从指定的索引位置开始length长度个字符串删除
string ToString() 将StringBuilder类型转换成string 类型
  StringBuilder sb = new StringBuilder();sb.Append("abcd");sb.Insert(3, "aaa");sb.Remove(3, 3);sb.Replace("a", "b");Console.WriteLine("替换字符串:"+sb.ToString());

六、DateTime、TimeSpan结构体

1、DateTime结构体的构造方法
在程序开发中,需要对日期进行处理,例如向系统录入数据,因此需要记录当前时间。为此C#中提供了一个表示时间的DataTime结构体
说明:DateTime不是class,而是struct

DateTime(int year, int month, int day) 用指定的年、月和日实例化DateTime对象
DateTime(int year, int month, int day, int hour, int minute, int second) 用指定的年、月、日、时、分和秒实例化DateTime对象

说明:
(1)第一种构造方法没有指明时分秒,默认都为0。
(2)年月日时分秒如果不在合法范围内,则会报错。

2、TimeSpan结构体的构造方法
TimeSpan对象用于表示时间间隔,在使用DateTime结构体时经常需要通过该对象增加时间间隔。TimeSpan结构体的两个构造方法。

TimeSpan(int hour, int minute, int second) 用指定的时、分、秒实例化TimeSpan对象
TimeSpan(int day int hour, int minute, int second) 用指定的日、时、分、秒实例化TimeSpan对象

3、DateTime结构体的常用属性
在日期数据处理的过程中,经常需要通过DateTime对象的属性来获取日期中的某一部分的信息

Date  |获取此实例的日期部分
Day   |获取此实例所表示的日期为该月中的第几天
Hour  |获取此实例所表示日期的小时部分
Minute|获取此实例所表示日期的分钟部分
Month |获取此实例所表示日期的月份部分
Today |获取当前日期
Year  |获取此实例所表示日期的年份部分
Now   |获取一个 DateTime 对象,该对象设置为此计算机上的当前日期和时间,表示为本地时间。

通过ToString()方法按指定格式输出,y表示年,4位y表示4位数年份,2位yy表示2位数年份;大写M表示月,2位MM,表示月份用2位数表示;小写d表示日,2位dd,表示日用2位数表示;H表示24小时制小时,小写h表示12小时制小时,小写m表示分,小写s表示秒。

DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss");

4、DateTime结构体的常用方法
在程序开发中,经常需要对日期进行处理,比如比较两个日期是否相等、对日期进行修改等。

DateTime Add(TimeSpan ts)  |返回一个 DateTime对象,它将指定 时间间隔添加到此实例的值上。
bool Equals(DateTime dt)   |返回一个bool值,指示此实例是否与指定的 DateTime 实例相等。
string ToShortTimeString() |将当前 DateTime 对象的值转换为其等效的短时间字符串表示。只有时:分
string ToLongTimeString()  |将当前 DateTime 对象的值转换为其等效的长时间字符串表示。时:分:秒
string ToShortDateString() |将当前 DateTime 对象的值转换为其等效的短日期字符串表示,如2023/1/11
string ToLongDateString()  |将当前 DateTime 对象的值转换为其等效的长日期字符串表示,如2023513static int Compare(DateTime dt1,DateTime dt2) |对两个 DateTime 的实例进行比较,并返回一个指示第一个实例是早于、等于还是晚于第二个实例的整数。
DateTime dt = DateTime.Now;      
//定义一个时间对象
TimeSpan ts = new TimeSpan(1, 0, 0);
//当前时间加上一小时
dt=dt.Add(ts);
Console.WriteLine("dt:"+dt);

七、Random类

在程序开发中,经常需要生成一些随机数,例如,抽奖的号码就是随机生成的,为此,在C#语言中提供了一个Random类,该类表示伪随机数生成器,它可以随机产生数字。

Random()	使用与时间相关的默认种子值,初始化 Random 类的新实例。
Random(int seed)	使用指定的种子值初始化 Random 类的新实例。

第一个构造方法是无参数的,通过它创建的Random实例对象每次使用的种子值是随机的,因此每个对象产生的随机数不同。
如果希望创建的多个Random实例对象产生相同序列的随机数,则可以在创建对象时调用第二个构造方法,传入相同的种子值。

Random类提供了很多的方法来生成各种伪随机数,可以指定生成随机数的范围,不仅可以生成整型随机数,还可以生成浮点类型的随机数

int Next()	返回一个非负随机整数。
int Next(int max)	返回一个小于所指定最大值的非负随机整数
int Next(int min, int max)	返回在指定范围内的任意整数[min,max)
double NextDouble ()	返回一个介于 0.01.0 之间的随机浮点数[0.0,1.0)

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

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

相关文章

React Native 从类组件到函数组件

1. 发展趋势 React Native社区中的趋势是朝向使用函数组件(Functional Components)和Hooks的方向发展,而不是使用类组件(Class Components)。 React Native自推出Hooks API以来,函数组件和Hooks的使用变得…

【JavaEE】多线程(7) -- 线程池的概念和简单实现

目录 1.线程池是什么 2.标准库中的线程池 2.1ThreadPoolExecutor 2.2构造方法参数介绍 2.3拒绝策略(面试易考) 2.4Executor的使用 3.实现线程池 1.线程池是什么 线程池是一种用来管理线程的机制,它可以有效地控制线程的创建、复用和销毁,从而提高程…

程序的编译、链接

目录 前言: 前置知识回顾 宏 宏定义常量 宏定义语句 宏定义函数 条件编译 应用场景 编译过程概览 预编译阶段 编译阶段 汇编阶段 链接阶段 前言: 在ANSI C的任何一种实现中,存在两种不同的环境,第1种是翻译环境&#x…

EE Vocabulary(电气工程词汇库)

前言 整理了一些EE(电子工程)和CS(计算机)专业的学生们阅读英文文献或写论文常用的一些词汇。 仓库GitHub地址:https://github.com/Phillweston/EE_Vocabulary 内容 仓库包含以下格式的电气工程词汇: …

GPT-5、开源、更强的ChatGPT!OpenAI公布2024年计划

年终岁尾,正值圣诞节热闹气氛的OpenAI写下了2024年的发展清单。 OpenAI联合创始人兼首席执行官Sam Altman在社交平台公布,AGI(稍晚一些)、GPT-5、更好的语音模型、更高的费率限制; 更好的GPTs;更好的推理…

代码随想录算法训练营第三十二天|122.买卖股票的最佳时机II、 55. 跳跃游戏、45.跳跃游戏II

122.买卖股票的最佳时机II 题目链接:力扣(LeetCode)官网 - 全球极客挚爱的技术成长平台 文档讲解:代码随想录 视频讲解:贪心算法也能解决股票问题!LeetCode:122.买卖股票最佳时机II_哔哩哔哩_bi…

大数据- Hadoop入门

目录 🐶2.1 hadoop的简介 1. 概述 2. 什么是分布式? 3. Hadoop的指代 🐶2.2 hadoop的发展历程 🐶2.3 hadoop的版本介绍 🐶2.4 hadoop的常用端口号 🐶2.5 hadoop的设计目的 🐶2.6 hadoo…

Java集合/泛型篇----第二篇

系列文章目录 文章目录 系列文章目录前言一、说说List,Set,Map三者的区别二、Array与ArrayList有什么不一样?三、Map有什么特点四、集合类存放于 Java.util 包中, 主要有几 种接口前言 前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。…

upload-labs Pass-03(黑名单验证,特殊后缀)问题纠正

php任何后缀名解析 背景:为了验证php解析不依靠后缀名,可以是任何后缀名,纠正upload-labs Pass-03(黑名单验证,特殊后缀)里所说的几个固定的后缀名理论是错误的。1 部署1.1 环境准备1.1.1 系统、内核&#…

【音视频 ffmpeg 学习】 跑示例程序 持续更新中

环境准备 在上一篇文章 把mux.c 拷贝到main.c 中 使用 attribute(unused) 消除警告 __attribute__(unused)/** Copyright (c) 2003 Fabrice Bellard** Permission is hereby granted, free of charge, to any person obtaining a copy* of this software and associated docu…

计算机毕业设计-----ssm流浪狗领养系统

项目介绍 我国的动物管理正处于起步阶段,注册在线的宠物数量非常有限,信息也很封闭,因此必须发挥民间力量扩容,加强宠物信息的宣传力度,使更多爱护动物的好心人可以领养宠物,同时也就收纳有家宠物信息&…

Efficient Classification of Very Large Images with Tiny Objects(CVPR2022补1)

文章目录 Two-stage Hierarchical Attention SamplingOne-stageTwo-Stage内存需求 Efficient Contrastive Learning with Attention Sampling Two-stage Hierarchical Attention Sampling 一阶段缩放是hw,提取的特征是h1w1, 二阶段缩放是uv(…

Mongodb聚合操作中的$type

在mongodb查询语句中,用户可以通过指定$type值,查询出的符合字段类型的文档数据。在mongodb聚合操作中,也存在$type操作符。本文就聚合操作中的$type进行介绍。 定义 返回一个表示传入参数BSON类型的字符串。在聚合操作中,按照下…

leetcode贪心(最大子序列和、分发饼干、摆动序列)

455.分发饼干 假设你是一位很棒的家长,想要给你的孩子们一些小饼干。但是,每个孩子最多只能给一块饼干。 对每个孩子 i,都有一个胃口值 g[i],这是能让孩子们满足胃口的饼干的最小尺寸;并且每块饼干 j,都有…

iPortal内置Elasticsearch启动失败的几种情况——Linux

作者:yx 文章目录 前言一、端口占用二、ES启动过慢三、磁盘占用过高,导致ES变为只读模式 前言 在Linux环境启动iPortal后有时会出现搜索异常的情况,如下截图,这是因为Elasticsearch(以下简称“ES”)没启动…

快速理解ASCII、GBK、Unicode、UTF-8、ANSI

文章大部分内容来源于非官方说明,且无法用逻辑推理出结果,准确性仅供参考。 ASCII 计算机是老外发明的,想让计算机实现更多的功能,必然少不了把常用的字母和符号存进去,甚至包含一些特殊符号,于是ASCII码…

剑指 Offer(第2版)面试题 60:n 个骰子的点数

剑指 Offer(第2版)面试题 60:n 个骰子的点数 剑指 Offer(第2版)面试题 60:n 个骰子的点数解法 1:递归解法 2:动态规划 剑指 Offer(第2版)面试题 60&#xff1…

共享单车之数据可视化

文章目录 第1关:绘制地图第2关:绘制流量最高的五条线路的路程图 第1关:绘制地图 任务描述 本关任务:使用JSP在百度地图上绘制一条共享单车起始路程。 相关知识 为了完成本关任务,你需要掌握: 如何创建地…

进阶学习——Linux系统服务器硬件认识与RAID磁盘

目录 一、服务器知识补充 1.硬件 2.服务器常见故障 二、认识RAID 1.什么是RAID 2.RAID的优点 3.RAID的实现方式 三、RAID磁盘陈列 1.RAID 0 磁盘陈列介绍——RAID 0 2.RAID 1 磁盘陈列介绍——RAID 1 3.RAID 5 磁盘陈列介绍——RAID 5 4.RAID 6 磁盘陈列介绍——RA…

vr体验馆用什么软件计时计费,如遇到停电软件程序如何恢复时间

vr体验馆用什么软件计时计费,如遇到停电软件程序如何恢复时间 一、软件程序问答 如下图,软件以 佳易王vr体验馆计时计费软件V17.9为例说明 1、软件如何计时间? 点击相应编号的开始计时按钮即可 2、遇到停电再打开软件时间可以恢复吗&…