当前位置: 首页 > news >正文

C#小结:string、double、TimeSpan等常见类型的小结和坑点

一、string

1.常见用法

string s = "我是一个字符串";Console.WriteLine(s.Length);//输出长度7Console.WriteLine(s.IndexOf("是"));//输出索引1Console.WriteLine(s.Replace("是", "不是"));//后代前,输出“我不是一个字符串”Console.WriteLine(s.Substring(4, 3));//切片输出“字符串”(第4开始长度为3)Console.WriteLine(s.Substring(2));//切片输出“一个字符串”(第2开始到结束)bool b= s.Contains("一个");//字符串s,是否含有 “一个”bool b2=s.StartsWith("一个") ;// 字符串s,是否以 “一个”开头bool b3=s.EndsWith("一个") ;// 字符串s,是否以 “一个”结尾

2.Trim去除字符串

去除多余字符时,字符字面量中的字符太多:

data.TrimStart('ABC');

改为:

data.TrimStart("ABC".ToCharArray());

3.Contains方法混淆

mainString.Contains(subString),例子如下所示:

Console.WriteLine("P业务经理".Contains("P领域主管,P项目成员,P业务经理"));//返回False
Console.WriteLine("P领域主管,P项目成员,P业务经理".Contains("P业务经理"));//返回True

4.Split劈分字符串

    string s = "Hello,World,How,Are,You";string[] words = s.Split(',');Console.Write(words[1]);//输出World

二、Double

1.计算结果为0

当b和c都是int类型时,如b=1 c=10,则a=0

double a= b/c ;

若使得a=0.1,需改成:

double a= (double)b/c ;

三、TimeSpan

1.兼容LINQ中的Sum方法

LINQ不支持TimeSpan用Sum方法,例如以下list的Time的类型是TimeSpan,以下代码会报错

list.Sum(x => x.Time).TotalHours

可以转化一下,先求出毫秒总和,然后再化为TimeSpan形式,求出TotalHours(或者其余需要的变量)

TimeSpan.FromMilliseconds(list.Sum(x => x.Time.Value.TotalMilliseconds)).TotalHours

四、Tuple

实现值的快速交换:

   int a = 1;int b = 100;(a, b) = (b, a);//交换Console.WriteLine(a);//100Console.WriteLine(b);//1

零、其余小结

1.问号的两种用法

//1.有关空string text = null;//text不为空才点出Length,如果为空则输出123Console.WriteLine(text?.Length.ToString() ?? "123");//2.三元运算符string result = (text == "1") ? "text等于1" : "text不等于1";Console.WriteLine(result);

2.判断入参类型

public object GetTypeCode(object obj){if (obj is float)//如果传参是浮点型{return "abc";//返回字符串abc}else if (obj is double)//如果传参是双精度浮点型{return 2;//返回整型2}else{// 如果传入的类型不是float或double,则返回null或其他你认为合适的值return null;}}

3.拓展方法

【注意】不要和原有方法重名,否则优先执行原有方法!以下是string的拓展方法。

public static class ExpandMethod//扩展方法类名是任意起的,public static固定不变{public static bool EqualsAAA(this String data)//方法名是任意起的,public static固定不变,第一个参数是:this+被扩展类型+内容参数{   //若有入参(this String data,int a,sting b)if (data.Equals("AAA")){return true;}return false;}}class MainClass//新建一个类,在这个类中可调用写好的扩展类下的扩展方法{static void Main(string[] args){Console.WriteLine("a".EqualsAAA());//调用扩展方法,返回FalseConsole.WriteLine("as".EqualsAAA());//返回FalseConsole.WriteLine("AAA".EqualsAAA());//返回True}}

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • mysql的存储过程:
  • go操作aws s3
  • RemakePython
  • 24年第三届钉钉杯大学生大数据挑战赛
  • PySide(PyQt)使用QPropertyAnimation制作动态界面
  • html实现酷炫美观的可视化大屏(十种风格示例,附源码)
  • 【JS】前端文件读取FileReader操作总结
  • 写代码对人的影响
  • Linux(虚拟机)的介绍
  • vue2 vue3 props 的处理机制
  • 如何利用AI工具获取所有Excel公式?
  • 视频隐写术
  • docker -v 到底和那个一样?type=volume还是type=bind的解释
  • Java环境变量配置详解:从安装到调试
  • 【Vulnhub系列】Vulnhub_Seattle_003靶场渗透(原创)
  • C++11: atomic 头文件
  • Docker 笔记(1):介绍、镜像、容器及其基本操作
  • Git的一些常用操作
  • HTML5新特性总结
  • Java应用性能调优
  • js如何打印object对象
  • leetcode讲解--894. All Possible Full Binary Trees
  • Rancher-k8s加速安装文档
  • React as a UI Runtime(五、列表)
  • springboot_database项目介绍
  • web标准化(下)
  • 发布国内首个无服务器容器服务,运维效率从未如此高效
  • 解析带emoji和链接的聊天系统消息
  • 跨域
  • 异常机制详解
  • 在GitHub多个账号上使用不同的SSH的配置方法
  • kubernetes资源对象--ingress
  • ​无人机石油管道巡检方案新亮点:灵活准确又高效
  • #{}和${}的区别是什么 -- java面试
  • #Linux(帮助手册)
  • $.ajax()
  • (04)Hive的相关概念——order by 、sort by、distribute by 、cluster by
  • (3) cmake编译多个cpp文件
  • (附源码)spring boot公选课在线选课系统 毕业设计 142011
  • (力扣)1314.矩阵区域和
  • .Net Core webapi RestFul 统一接口数据返回格式
  • .NET Core 项目指定SDK版本
  • .net6解除文件上传限制。Multipart body length limit 16384 exceeded
  • .sh
  • @31省区市高考时间表来了,祝考试成功
  • @Slf4j idea标红Cannot resolve symbol ‘log‘
  • @TableId注解详细介绍 mybaits 实体类主键注解
  • [ linux ] linux 命令英文全称及解释
  • [ vulhub漏洞复现篇 ] struts2远程代码执行漏洞 S2-005 (CVE-2010-1870)
  • [2019/05/17]解决springboot测试List接口时JSON传参异常
  • [Angular] 笔记 6:ngStyle
  • [BZOJ5125]小Q的书架(决策单调性+分治DP+树状数组)
  • [C++] cout、wcout无法正常输出中文字符问题的深入调查(1):各种编译器测试
  • [CISCN 2019华东南]Web11
  • [CodeForces-759D]Bacterial Melee