C# 数组 字符串 结构体 枚举

数组

  1. 数组是一个存储相同类型元素的固定大小的顺序集合。
  2. 所有的数组都是连续的内存位置组成,最低地址的是第一个元素,最高地址的是最后一个元素
  3. 声明数组 DataType[] arrayName;
    1. DataType 用于指定被存储在数组中的元素类型
    2. [] 指定数组的秩(维度), 秩指定数组的大小
    3. arrayName 数组的名字
  4. 初始化数组
    1. 声明一个数组不会在内存中初始化数组,当初始化数组变量时可以赋值给数组
    2. 数组时一个引用值,所以需要使用 new关键字来创建数组的实例
      1.  double[] balance = new double[10] ;
      2. 声明数组的时候同时赋值:  double[] balance = {223.0,225.0,2263.0};
      3.  int []  Data  = new int[5] {1, 2, 34, 4, 5}
      4. int[] Data = new int[] {1, 2, 3, 4, 5}; int Data2[] = Data;
  5. 多维数组
    1. 声明 DataType[,] : 在中括号中使用逗号区分,
    2. 多维数组的最简单的形式就是二维数组,然而二维数组可以看成一维数组的列表
    3. 获取多数组当前的维数 使用 getleng(Prameter) ; paramter 代表 0 1 2 3 4
  6. 交叉数组
    1. 交叉数组是数组的数组
    2. 交叉数组是一维数组
  7. Array类
    1. 是C#中所有数组的基类,包含了属性和方法

字符串

  1. 属性
    1. Chars 在当前string对象中 获取Char对象的指定位置
    2. Length 获取当前对象的长度
  2. 方法
    1.  public static int Compare( string strA, string strB )   比较两个字符串的大小
    2.  public static int Compare( string strA, string strB, bool ignoreCase )  判断是否区分大小写来比较两个字符串
    3. public static string Concat( string str0, string str1 )  连接两个字符串
    4. public static string Concat( string str0, string str1, string str2, string str3 ) 连接4个字符串
    5. public bool Contains( string value ) 返回一个表示指定 string 对象是否出现在字符串中的值。
    6. public static string Copy( string str )  创建一个与指定字符串具有相同值的新的 String 对象。
    7. public void CopyTo( int sourceIndex, char[] destination, int destinationIndex, int count ) 从 string 对象的指定位置开始复制指定数量的字符到 Unicode 字符数组中的指定位置
    8. public bool EndsWith( string value ) 判断 string 对象的结尾是否匹配指定的字符串。
    9. public bool Equals( string value ) 判断当前的 string 对象是否与指定的 string 对象具有相同的值
    10. public static bool Equals( string a, string b ) 判断两个指定的 string 对象是否具有相同的值
    11. public static string Format( string format, Object arg0 ) 把指定字符串中一个或多个格式项替换为指定对象的字符串表示形式。
    12. public int IndexOf( char value ) 返回指定 Unicode 字符在当前字符串中第一次出现的索引,索引从 0 开始。
    13. public int IndexOf( string value ) 返回指定字符串在该实例中第一次出现的索引,索引从 0 开始。
    14. public int IndexOf( char value, int startIndex ) 返回指定 Unicode 字符从该字符串中指定字符位置开始搜索第一次出现的索引,索引从 0 开始
    15. public int IndexOf( string value, int startIndex ) 返回指定字符串从该实例中指定字符位置开始搜索第一次出现的索引,索引从 0 开始。
    16. public int IndexOfAny( char[] anyOf ) 返回某一个指定的 Unicode 字符数组中任意字符在该实例中第一次出现的索引,索引从 0 开始
    17.  public int IndexOfAny( char[] anyOf, int startIndex ) 返回某一个指定的 Unicode 字符数组中任意字符从该实例中指定字符位置开始搜索第一次出现的索引,索引从 0 开始。
    18. public string Insert( int startIndex, string value ) 返回一个新的字符串,其中,指定的字符串被插入在当前 string 对象的指定索引位置。
    19. public static bool IsNullOrEmpty( string value ) 指示指定的字符串是否为 null 或者是否为一个空的字符串
    20. public static string Join( string separator, string[] value ) 连接一个字符串数组中的所有元素,使用指定的分隔符分隔每个元素
    21. public static string Join( string separator, string[] value, int startIndex, int count ) 连接接一个字符串数组中的指定位置开始的指定元素,使用指定的分隔符分隔每个元素
    22. public int LastIndexOf( char value ) 返回指定 Unicode 字符在当前 string 对象中最后一次出现的索引位置,索引从 0 开始。
    23. public int LastIndexOf( string value ) 返回指定字符串在当前 string 对象中最后一次出现的索引位置,索引从 0 开始。
    24. public string Remove( int startIndex ) 移除当前实例中的所有字符,从指定位置开始,一直到最后一个位置为止,并返回字符串
    25. public string Remove( int startIndex, int count )从当前字符串的指定位置开始移除指定数量的字符,并返回字符串。
    26. public string Replace( char oldChar, char newChar )
    27. public string Replace( string oldValue, string newValue ) 
    28. public string[] Split( params char[] separator ) 返回一个字符串数组,包含当前的 string 对象中的子字符串,子字符串是使用指定的 Unicode 字符数组中的元素进行分隔的。
    29. public string[] Split( char[] separator, int count ) 
      返回一个字符串数组,包含当前的 string 对象中的子字符串,子字符串是使用指定的 Unicode 字符数组中的元素进行分隔的。int 参数指定要返回的子字符串的最大数目。
    30. public bool StartsWith( string value ) 判断字符串实例的开头是否匹配指定的字符串。
    31. public char[] ToCharArray()
      返回一个带有当前 string 对象中所有字符的 Unicode 字符数组。
    32. public char[] ToCharArray( int startIndex, int length ) 
      返回一个带有当前 string 对象中所有字符的 Unicode 字符数组,从指定的索引开始,直到指定的长度为止。
    33. public string ToLower() 把字符串转换为小写并返回。
    34. public string ToUpper()  把字符串转换为大写并返回
    35. public string Trim()   移除当前 String 对象中的所有前导空白字符和后置空白字符

结构体

在C#中结构体事值类型是数据结构,它使得一个单一变量可以储存各种数据类型的相关数据 struct 关键字用于创建结构体

  1. C#结构的特点
    1. 结构可以带有方法,字段,索引 , 属性, 运算符方法和事件
    2. 结构可定义构造函数(必须带参数的构造函数),但是不能定义析构函数,
    3. 不能继承其他的结构或者类
    4. 结构不能做成其他类或者结构的基础结构
    5. 结构可实现一个或者多个接口
    6. 结构的成员不能是abstruct virtual protected
    7. 当您使用new操作符创建一个结构对象的时候,会调用适当的结构函数来创建结构,与类不同结构不使用new操作符即可被实例化
    8. 如果不使用new操作符, 只有在所有字段都被初始化之后字段才被赋值,对象才被使用
      namespace StudentCShrap
      {
          struct PointRect
          {
              public double m_x;
              public double m_y;
          };
      
          class MainClassTest
          {
              static void Main(string[] args)
              {
      
                  PointRect pr;
                  pr.m_x = 0;
                  Console.WriteLine("{0}, {1}", pr.m_x, pr.m_y);  // 错误 CS0170: 使用了可能未赋值的字段“m_y”
      
                  Console.ReadKey();
                  
              }
          }
      }
      
      /////////////////////////////////////////////
      namespace StudentCShrap
      {
          struct PointRect
          {
              public double m_x;
              public double m_y;
              public void DisPlay()
              {
                  Console.WriteLine("{0}, {1}", m_x, m_y);
              }
          };
      
          class MainClassTest
          {
              static void Main(string[] args)
              {
      
                  PointRect pr;
                  pr.DisPlay();// 错误 CS0165: 使用了未赋值的局部变量“pr”
                  PointRect pr = new PointRect();
                  pr.DisPlay(); //OK 
                  Console.ReadKey();
                  
              }
          }
      }
  2. 类和结构的不同
    1. 类是引用类型,结构是值类型
    2. 结构不能继承
    3. 结构不能声明默认构造函数
    4. 结构体的构造函数中,必须对所有的字段赋值,类的构造函数无此限制
    5. 类的存储在堆空间,结构存储在栈中,堆空间大访问速度慢,栈空间小,访问速度快
    6. 结构是值类型,它在栈中分配空间;而类是引用类型,它在堆中分配空间,栈中保存的只是引用。
    7. 结构类型直接存储成员数据,让其他类的数据位于堆中,位于栈中的变量保存的是指向堆中数据对象的引用。 
  3. 结构和类的适用场合分析:
    1. 当堆栈的空间很有限,且有大量的逻辑对象时,创建类要比创建结构好一些;
    2. 对于点、矩形和颜色这样的轻量对象,假如要声明一个含有许多个颜色对象的数组,则CLR需要为每个对象分配内存,在这种情况下,使用结构的成本较低;
    3. 在表现抽象和多级别的对象层次时,类是最好的选择,因为结构不支持继承。
    4. 大多数情况下,目标类型只是含有一些数据,或者以数据为主。

枚举

枚举是一组命名整型常量。枚举类型是使用 enum 关键字声明的。

C# 枚举是值类型。换句话说,枚举包含自己的值,且不能继承或传递继承。

发布了24 篇原创文章 · 获赞 5 · 访问量 3206

猜你喜欢

转载自blog.csdn.net/Ellis1993/article/details/105320724