c#基础类和常用算法

1.NET Framework类库
System: 基本数据类,如Object、Int32、Int64、Long、Math、DateTime、String等
System.IO: 输入输出类库,如Console、File、Stream等
System.Collections: 集合类库,包括Array、List、Stack、Dictionary等

2.Object类
Object是所有类的基类
所以,任何对象都有以下方法(最好在类中重写Object的 这些方法)
Equals() :判断两个对象相等
ToString():将对象信息转换为一个字符串
GetType():获得对象的类型
(1)Equals()方法
Equals(等价)和==(相等)的区别:
对于简单数据类型,表示其值相等;对于引用类型表示是同一个对象。
如果一个类没有重写Equals(注意:VS自动生成Equals方法后Equals与
意义不相同了,VS自动生成类的Equals方法是判断类中字段值时候相等的方法),那么Equals和意义相同。
Equals的重写
用于判断两个对象是否等价
需要同时重写GetHashCode方法
见示例TestEqualsObject.cs
注意:String虽然是引用类型,但重载了
运算符,所以==也表示数值相等
示例:
在这里插入图片描述
在这里插入图片描述
小贴士:在VS中可以点右键菜单“快速操作与重构”
,来生成Equals和GetHashCode方法代码。
在这里插入图片描述
生成结果如下:
在这里插入图片描述
(2)ToString()方法
ToString 方法
作用:把对象用字符串表示
自动调用:在把对象当作字符串输出或者连接时。
Console.WriteLine(student); //注意:缺省调用student.ToString()
“Hello,”+student+“!”// 相当于“Hello”+student.ToString()+”!”
在这里插入图片描述
(3)GetType(),作用与typeof()相同
对象调用GetType()方法返回的是对象实际的类型(将子类对象赋给父类,GetType()获取子类类型)
例如:在这里插入图片描述

3.克隆
浅克隆:对于值类型字段或者String字段,复制的是值;对于引用类型字段,复制的是引用(堆地址),而不是对象本身。使用MemberwiseClone()
深克隆:一层层复制引用字段的各层元素
在这里插入图片描述
4.Math类提供了相关的数学方法
一些常值:
在这里插入图片描述
在这里插入图片描述
一些方法:
Math.Ceiling:向上取整数(只支持两种数据类型Decimal和Double)
在这里插入图片描述
在这里插入图片描述
Math.Floor:向下取整数
在这里插入图片描述
在这里插入图片描述
Math.Round():四舍五入(不是真正意义上的四舍五入,而是银行家四舍五入,四舍六入五考虑,五后非零就进1,五后为零不进1。例如2.125保留两位小数取2.12,2.1251取2.13)
在这里插入图片描述
5.DateTime及TimeSpan
(1)DateTime
表示某个时间点
创建DateTime对象
DateTime d1=new DateTime(2018,9,30,9,50,00);
DateTime d2=DateTime.Now; //当前时间
(2)TimeSpan创建某个时间段
TimeSpan(Int32, Int32, Int32)将 TimeSpan结构的新实例初始化为指定的小时数、分钟数和秒数。
在这里插入图片描述

TimeSpan(Int32, Int32, Int32, Int32)将 TimeSpan结构的新实例初始化为指定的天数、小时数、分钟数和秒数。
在这里插入图片描述

也可以指定某个值其它为零:
在这里插入图片描述
如图所示,通过TimeSpan.FromSeconds初始化为指定的秒数
还可以用类型转化:
TimeSpan ts1=TimeSpan.Parse(“36.00:00:00:00”);36天
在这里插入图片描述
TimeSpan类的对象具有以下属性:
Days//直接取出TimeSpan结构所表示的时间间隔的天数部分
Hours//直接取出TimeSpan结构所表示的时间间隔的小时部分
Minutes//直接取出TimeSpan结构所表示的时间间隔的分钟部分
Seconds//直接取出TimeSpan结构所表示的时间间隔的秒数部分

6.String类
(1)创建字符串
String s1=”HELLO”;
String s2=new String(new char[]{‘H’,‘E’,‘L’,‘L’,‘O’});
String s3=new String(‘A’,3);// “AAA”
字符串长度:s.Length
字符串连接:String s4=s1+s2+“abc”;
(2)
取字符:s[0]
取子串: SubString方法
String s=”HELLO”;
String s2=s.SubString(1,3); //”ELL”, 从s[1]到s[3]
String s3=s.SubString(1); //”ELLO”, 从s[1]到s[s.Length-1]
String s4=s.SubString(1,8); //异常!
(3)字符串匹配
s.StartsWith(s1)
s.EndsWith(s1)
s.Contains(s1)
s.IndexOf(s1) //返回第一次匹配的位置,无匹配返回-1
s.LastIndexOf(s1) //返回最后一次匹配的位置,无匹配返回-1
以StartsWith()为例:
如果字符串以指定的前缀开始,则返回 true;否则返回 false。
public class Test {
public static void main(String args[]) {
String Str = new String(“www.runoob.com”);
System.out.print(“返回值 :” );
System.out.println(Str.startsWith(“www”) );
System.out.print(“返回值 :” );
System.out.println(Str.startsWith(“runoob”) );
System.out.print(“返回值 :” );
System.out.println(Str.startsWith(“runoob”, 4) );
}}
以上程序执行结果为:
返回值 :true
返回值 :false
返回值 :true
(4)StringBuilder
String 对象是不可改变的。每次使用 System.String 类中的方法之一时,都要在内存中创建一个新的字符串对象,这就需要为该新对象分配新的空间。在需要对字符串执行重复修改的情况下,与创建新的 String 对象相关的系统开销可能会非常昂贵。如果要修改字符串而不创建新的对象,则可以使用 System.Text.StringBuilder 类。
StringBuilder对象常用的方法:
Append 方法可用来将文本或对象的字符串表示形式添加到由当前 StringBuilder 对象表示的字符串的结尾处。以下示例将一个 StringBuilder 对象初始化为“Hello World”,然后将一些文本追加到该对象的结尾处。将根据需要自动分配空间。
StringBuilder MyStringBuilder = new StringBuilder(“Hello World!”);
MyStringBuilder.Append(" What a beautiful day.");
Console.WriteLine(MyStringBuilder);
此示例将 Hello World! What a beautiful day. 显示到控制台。

AppendFormat 方法将文本添加到 StringBuilder 的结尾处,而且实现了 IFormattable 接口,因此可接受格式化部分中描述的标准格式字符串。可以使用此方法来自定义变量的格式并将这些值追加到 StringBuilder 的后面。以下示例使用 AppendFormat 方法将一个设置为货币值格式的整数值放置到 StringBuilder 的结尾。
int MyInt = 25;
StringBuilder MyStringBuilder = new StringBuilder("Your total is “);
MyStringBuilder.AppendFormat(”{0:C} ", MyInt);
Console.WriteLine(MyStringBuilder);
此示例将 Your total is $25.00 显示到控制台。

Insert 方法将字符串或对象添加到当前 StringBuilder 中的指定位置。以下示例使用此方法将一个单词插入到 StringBuilder 的第六个位置。
StringBuilder MyStringBuilder = new StringBuilder(“Hello World!”);
MyStringBuilder.Insert(6,"Beautiful ");
Console.WriteLine(MyStringBuilder);
此示例将 Hello Beautiful World! 显示到控制台。

Remove 方法从当前 StringBuilder 中移除指定数量的字符,移除过程从指定的从零开始的索引处开始。以下示例使用 Remove 方法缩短 StringBuilder。
StringBuilder MyStringBuilder = new StringBuilder(“Hello World!”);
MyStringBuilder.Remove(5,7);
Console.WriteLine(MyStringBuilder);
此示例将 Hello 显示到控制台。

Replace 方法,可以用另一个指定的字符来替换 StringBuilder 对象内的字符。以下示例使用 Replace 方法来搜索 StringBuilder 对象,查找所有的感叹号字符 (!),并用问号字符 (?) 来替换它们。
StringBuilder MyStringBuilder = new StringBuilder(“Hello World!”);
MyStringBuilder.Replace(’!’, ‘?’);
Console.WriteLine(MyStringBuilder);
此示例将 Hello World? 显示到控制台

StringBuilder对象可以使用.Length获得长度
使用ToString转换为字符串

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值