C#中一些常用的方法使用

2019-12-04 19:00栏目:bob体育平台
TAG:

一、字符串

一.string.Empty

(1)先掌握多少个与空类型相关的首要字和对象

  •   透过string定义一个字符串,或许经过String类来成立对象。

    •   通过new String(卡塔尔(قطر‎创设有瞬间三种布局函数(从元数据),以此顺序创造string;
    • 图片 1图片 2

      //
              // 摘要:
              //     将 System.String 类的新实例初始化为由 Unicode 字符数组指示的值。
              //
              // 参数:
              //   value:
              //     Unicode 字符的数组。
              [SecuritySafeCritical]
              public String(char[] value);
              //
              // 摘要:
              //     将 System.String 类的新实例初始化为由指向 8 位有符号整数数组的指针指示的值。
              //
              // 参数:
              //   value:
              //     一个指针,指向以 null 结尾的 8 位带符号整数数组。
              //
              // 异常:
              //   T:System.ArgumentNullException:
              //     value 为 null。
              //
              //   T:System.ArgumentException:
              //     如果 value 是用 ANSI 编码的,则不能使用 value 初始化 System.String 的新实例。
              //
              //   T:System.ArgumentOutOfRangeException:
              //     要初始化的新字符串的长度过大,无法分配,该长度由 value 的 null 终止字符决定。
              //
              //   T:System.AccessViolationException:
              //     value 指定的地址无效。
              [CLSCompliant(false)]
              [SecurityCritical]
              public String(sbyte* value);
              //
              // 摘要:
              //     将 System.String 类的新实例初始化为由指向 Unicode 字符数组的指定指针指示的值。
              //
              // 参数:
              //   value:
              //     指向以 null 终止的 Unicode 字符数组的指针。
              //
              // 异常:
              //   T:System.ArgumentOutOfRangeException:
              //     当前进程并不是对所有编址字符都有读取权限。
              //
              //   T:System.ArgumentException:
              //     value 指定了包含无效 Unicode 字符的数组,或者 value 指定了小于 64000 的地址。
              [CLSCompliant(false)]
              [SecurityCritical]
              public String(char* value);
              //
              // 摘要:
              //     将 System.String 类的新实例初始化为由重复指定次数的指定 Unicode 字符指示的值。
              //
              // 参数:
              //   c:
              //     一个 Unicode 字符。
              //
              //   count:
              //     c 出现的次数。
              //
              // 异常:
              //   T:System.ArgumentOutOfRangeException:
              //     count 小于零。
              [SecuritySafeCritical]
              public String(char c, int count);
              //
              // 摘要:
              //     将 System.String 类的新实例初始化为由 Unicode 字符数组、该数组内的起始字符位置和一个长度指示的值。
              //
              // 参数:
              //   value:
              //     Unicode 字符的数组。
              //
              //   startIndex:
              //     value 内的起始位置。
              //
              //   length:
              //     要使用的 value 内的字符数。
              //
              // 异常:
              //   T:System.ArgumentNullException:
              //     value 为 null。
              //
              //   T:System.ArgumentOutOfRangeException:
              //     startIndex 或 length 小于零。- 或 -startIndex 和 length 之和大于 value 中的元素数。
              [SecuritySafeCritical]
              public String(char[] value, int startIndex, int length);
              //
              // 摘要:
              //     将 System.String 类的新实例初始化为由指向 8 位有符号整数数组的指定指针、该数组内的起始位置和一个长度指示的值。
              //
              // 参数:
              //   value:
              //     指向 8 位带符号整数数组的指针。
              //
              //   startIndex:
              //     value 内的起始位置。
              //
              //   length:
              //     要使用的 value 内的字符数。
              //
              // 异常:
              //   T:System.ArgumentNullException:
              //     value 为 null。
              //
              //   T:System.ArgumentOutOfRangeException:
              //     startIndex 或 length 小于零。- 或 -由 value + startIndex 指定的地址相对于当前平台来说太大;即,地址计算溢出。-
              //     或 -要初始化的新字符串的长度太大,无法分配。
              //
              //   T:System.ArgumentException:
              //     由 value + startIndex 指定的地址小于 64K。- 或 -如果 value 是用 ANSI 编码的,则不能使用 value 初始化 System.String
              //     的新实例。
              //
              //   T:System.AccessViolationException:
              //     value、startIndex 和 length 共同指定的地址无效。
              [CLSCompliant(false)]
              [SecurityCritical]
              public String(sbyte* value, int startIndex, int length);
              //
              // 摘要:
              //     将 System.String 类的新实例初始化为由指向 Unicode 字符数组的指定指针、该数组内的起始字符位置和一个长度指示的值。
              //
              // 参数:
              //   value:
              //     指向 Unicode 字符数组的指针。
              //
              //   startIndex:
              //     value 内的起始位置。
              //
              //   length:
              //     要使用的 value 内的字符数。
              //
              // 异常:
              //   T:System.ArgumentOutOfRangeException:
              //     startIndex 或 length 小于零,value + startIndex 引起指针溢出,或者当前进程并不是对所有编址字符都有读取权限。
              //
              //   T:System.ArgumentException:
              //     value 指定了包含无效 Unicode 字符的数组,或者 value + startIndex 指定了小于 64000 的地址。
              [CLSCompliant(false)]
              [SecurityCritical]
              public String(char* value, int startIndex, int length);
              //
              // 摘要:
              //     将 System.String 类的新实例初始化为由指向 8 位有符号整数数组的指定指针、该数组内的起始位置、长度以及 System.Text.Encoding
              //     对象指示的值。
              //
              // 参数:
              //   value:
              //     指向 8 位带符号整数数组的指针。
              //
              //   startIndex:
              //     value 内的起始位置。
              //
              //   length:
              //     要使用的 value 内的字符数。
              //
              //   enc:
              //     一个对象,用于指定如何对 value 所引用的数组进行编码。如果 enc 为 null,则假定以 ANSI 编码。
              //
              // 异常:
              //   T:System.ArgumentNullException:
              //     value 为 null。
              //
              //   T:System.ArgumentOutOfRangeException:
              //     startIndex 或 length 小于零。- 或 -由 value + startIndex 指定的地址相对于当前平台来说太大;即,地址计算溢出。-
              //     或 -要初始化的新字符串的长度太大,无法分配。
              //
              //   T:System.ArgumentException:
              //     由 value + startIndex 指定的地址小于 64K。- 或 -未能使用 value 初始化 System.String 的新实例,假定 value
              //     按照 enc 的指定进行编码。
              //
              //   T:System.AccessViolationException:
              //     value、startIndex 和 length 共同指定的地址无效。
              [CLSCompliant(false)]
              [SecurityCritical]
              public String(sbyte* value, int startIndex, int length, Encoding enc);
      

      View Code

    • 图片 3图片 4

      char []cstr = { 'a','b','c','d','e'};
                  char cstr1 = 'a';
                  sbyte se = 113;
      
                  String a = new String(cstr);
                  //
      
                  String b = new String(&cstr1);
      
                  String c = new String(&se);
      
                  String d = new String('d',2);
      
                  String e = new String(cstr,2,3);
      
                  String f = new String(&se,0,1);
                  Console.WriteLine((int)Convert.ToChar(f)+"n");//113
                  String g = new String(&se,0,1,Encoding.UTF8);
                  Console.WriteLine("a:{0}nb:{1}nc:{2}nd:{3}ne:{4}nf:{5}ng:{6}",a,b,c,d,e,f,g);
      

      View Code

  •   string是C#基元类型(primitive卡塔尔(英语:State of Qatar),string简单的讲正是编译器间接辅助的数据类型。运算符(== 和 !=卡塔尔(قطر‎是为了比较 string 对象的值, 并非相比援引

    • string a = "1234";
                  string b = "123";
                  b += "4";
                  Console.WriteLine(a == b);//比较值
                  Console.WriteLine((object)a == (object)b);//比较引用()
      
       
  •   string连接操作 (+=)

    •   短处很显眼, 操作频仍的话特别浪费内部存款和储蓄器空间的
    •   使用StringBuilder类对象方法append代替+=, 品质还会有所提高
  •   null," "和string.Empty的区别
    •   null代表不援用任何变量的空援引的值,null是引用变量的暗中认可值, 值类型变量无法接受
    •   ""表示分配一个内部存储器为空的仓储空间。
    •   string.Empty表示空字符串,并且不分配内部存款和储蓄器空间。
  •   剖断字符串为空 的俩种方法
    •   x.length==0 // 不能决断为null的字符串
    •   string.IsNullOrEmpty(x)   

string.Empty就一定于 "" ,通常用于字符串的先河化 ,

 

举个例子说: string a; Console.WriteLine(a卡塔尔(英语:State of Qatar);//这里会报错,因为未有初步化a

  Null : 

而上边不会报错: string a=string.Empty; Console.WriteLine(a卡塔尔国;

  关键字表示不援用任何对象的空援引,它是两全援用类型变量的暗许值,在2.0本子在此以前也就独有援用变量类型可感到null,如(string a=null)但在c# 2.0本子之后,Net也引进了可感到Null的值类型,但变量在概念的时候方式有所分裂,如:int ? a=null。详细看。不在内部存款和储蓄器中开拓内部存款和储蓄器地址,可用于援引是或不是可用。

如故用于比较: if(a==""卡塔尔 if(a==string.Empty卡塔尔 上边两句是平等的效果与利益。

   DBNULL:

 

  是贰个唯生机勃勃类,也正是说那体系型的实例独有三个,即DBNull.Value。首要用来提醒数据库中的字段值为空(null卡塔尔国时在.Net中映射的值,别的还足以用来在 COM Interop 中分歧 VT_NULL 变量(与空对象关系)和 VT_EMPTY 变量(与 DBNull.Value 实例涉及)。详细看。它应该有固定不改变的内部存款和储蓄器。

二.String.IsNullOrEmpty 方法

   String.Empty和"":

String.IsNullOrEmpty(value)

  那多个都意味空字符串,空字符串是三个非常的字符串,所以它依旧是四个字符串实例,也正是说它在内部存款和储蓄器中依然分配了让人惊叹标地址。

指令钦命的字符串是 null 依然 Empty 字符串。 能相同的时候测验 String 是不是为 null 或其值是不是为 Empty 等价于  result = (value卡塔尔(英语:State of Qatar) == null || (value卡塔尔(قطر‎ == String.Empty;

     Convert.IsDBNull(卡塔尔(英语:State of Qatar):再次回到有关内定对象是否为 DBNull 类型的提醒。正是用来剖断指标是或不是为DBNULL的。其再次回到值是True或Flase。首要用以和数据库操作相关的值判别。

参数 value :类型:System.String ,要测量检验的字符串。

 

回到值 类型:System.Boolean, 要是 value 参数为 null 或空字符串 (""卡塔尔(قطر‎,则赶回 true;不然重临 false。

(2)种种的行使办法和成效

 

 

三.Nullable可空类型

     对象的推断:使用Null可用来其余援引变量是不是为空的论断,是最主旨的对象为空推断方法,在和数据库相关的操作中选择DBNull.vaule或然Convert.IsDBNUll。

Nullable<Int32>,读作“可空的 Int32”,能够被赋值为 -2147483648 到 2147483647 之间的任性值,也得以被赋值为 null 值。

     字符串剖断:string在C#中也是叁个引用类型,但其又独具一定的特殊性。我们在选择string时,往往会把“变量值为空的字符串对象”和“变量值为空字符的字符串对象”搞混。所以经常会因为对此掌握不深引起不菲主题素材,因为string是我们付出进度使用最频仍的门类之风度翩翩,对于字符串的论断方式,通过对英特网资料的横盘和协和的实际操作经验现总计如下:

Nullable<bool> 能够被赋值为 true 或 false,或 null。在拍卖数据库和任何蕴涵只怕未赋值的因素的数据类型时,将 null 赋值给数值类型或布尔型的信守特别有用。

   string str 

譬喻,数据库中的布尔型字段能够累积值 true 或 false,或然,该字段也能够未定义。 

  1:string.IsNullOrEmpty == str  这种措施不止叁遍性能决断"空的字符串变量",还是能够断定“值为空字符串的变量”,並且仍可以让代码简洁赏心悦目。判定的成效也不算低。

可空类型具备以下特点:  ·可空类型表示可被赋值为 null 值的值类型变量。不恐怕创造基于援用类型的可空类型。(引用类型已协助 null 值。卡塔尔(英语:State of Qatar)。 

  2:str.Length == 0 这种措施,不引入应用。这种论断情势的履行功效最高,但要使用它你一定要确认保障字符串不null,假设为null就能够报出非常,

·语法 T? 是 System.Nullable<T> 的简写,此处的 T 为值类型。那二种情势可以沟通。  ·

   3.str == string.Empty 或 str == "" 那二种方法,不引入应用,他只可以推断“值为空字符串”的字符串变量,并且成效相当低

为可空类型赋值与为平时值类型赋值的点子风姿洒脱致,如 int? x = 10; 或 double? d = 4.108;。 

  4.str == null 这种措施也略微推荐,原因和3如出意气风发辙。

·假使底蕴项指标值为 null,请使用 System.Nullable.GetValueOrDefault 属性重临该底工项目所赋的值或暗中同意值,

版权声明:本文由bob体育app发布于bob体育平台,转载请注明出处:C#中一些常用的方法使用