C#小结:string、double、TimeSpan等常见类型的小结和坑点
创始人
2024-11-15 19:06:22
0

一、string

1.常见用法

string s = "我是一个字符串";  Console.WriteLine(s.Length);//输出长度7  Console.WriteLine(s.IndexOf("是"));//输出索引1  Console.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);//100     Console.WriteLine(b);//1

零、其余小结

1.问号的两种用法

//1.有关空  string text = null;//text不为空才点出Length,如果为空则输出123  Console.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());//调用扩展方法,返回False          Console.WriteLine("as".EqualsAAA());//返回False          Console.WriteLine("AAA".EqualsAAA());//返回True      }  } 

相关内容

热门资讯

绝活儿辅助!广西老友玩老是输怎... 绝活儿辅助!广西老友玩老是输怎么办(辅助挂)都是真的有辅助app(讲解有挂)在进入广西老友玩老是输怎...
法门辅助!福建13水插件(辅助... 法门辅助!福建13水插件(辅助挂)一贯是有辅助技巧(有挂技术)1、许多玩家不知道福建13水插件辅助怎...
办法辅助!潮友会app下载官方... 办法辅助!潮友会app下载官方辅助器(辅助挂)真是真的是有辅助app(有挂教程)该软件可以轻松地帮助...
妙招辅助!邯郸胡乐挂辅助(辅助... 妙招辅助!邯郸胡乐挂辅助(辅助挂)好像存在有辅助插件(有挂方略)1、上手简单,内置详细流程视频教学,...
教程书辅助!乐酷辅助(辅助挂)... 教程书辅助!乐酷辅助(辅助挂)其实存在有辅助脚本(有挂细节)乐酷辅助能透视中分为三种模型:乐酷辅助模...
学习辅助!决战卡五星辅助(辅助... 学习辅助!决战卡五星辅助(辅助挂)本来真的是有辅助软件(有人有挂)学习辅助!决战卡五星辅助(辅助挂)...
绝活辅助!边锋嘉兴麻将辅助器(... 绝活辅助!边锋嘉兴麻将辅助器(辅助挂)真是真的有辅助神器(新版有挂)1、边锋嘉兴麻将辅助器公共底牌简...
举措辅助!枫叶辅助器(辅助挂)... 举措辅助!枫叶辅助器(辅助挂)本来存在有辅助技巧(竟然有挂)1、下载好枫叶辅助器正确养号方法之后点击...
讲义辅助!点我达辅助(辅助挂)... 讲义辅助!点我达辅助(辅助挂)一直存在有辅助技巧(有人有挂)1、点我达辅助辅助器安装包、点我达辅助辅...
模块辅助!威信茶馆有挂的吗(辅... 模块辅助!威信茶馆有挂的吗(辅助挂)一直真的是有辅助脚本(揭秘有挂)1、玩家可以在威信茶馆有挂的吗线...