目录
C# 基础知识(八)_数组,字符串,结构体,枚举
数组
声明数组
初始化数组
访问数组元素
二维数组
多维数组
Array类
字符串
创建 String 对象
String 类的属性
String 类的方法(使用方法单独写个笔记)
结构体
定义结构体
枚举
声明枚举
数组是一个存储相同类型元素的固定大小的顺序集合。
数据类型[] 数组名字;
int[] nums;
声明一个数组不会在内存中初始化数组。当初始化数组变量时,可以赋值给数组。数组是一个引用类型,需要使用 new 关键字来创建数组的实例。
方法一:
int[] nums = new int[2];
nums[0]=1;
nums[1]=2;
方法二:
int[] nums = new int[2] { 1, 2 };
int[] nums = new int[] { 1, 2 };
int[] nums = { 1, 2 };
元素是通过带索引的数组名称来访问的。这是通过把元素的索引放置在数组名称后的方括号中来实现的。
数组的索引第一个是0。
int num=nums[0];
声明二维数组:
int[,] nums;
初始化二维数组:
int[,] nums = new int[3, 4];
一个二维数组可以被认为是一个带有 x 行和 y 列的表格。
声明和初始化和二维数组一样。略
Array 类是 C# 中所有数组的基类,其中提供了一系列用来处理数组的操作,例如对数组元素进行排序、搜索数组中指定的元素等。
Array 类中的属性:
Array 类中的方法:
using System;
namespace Notes
{
class Program
{
static void Main(string[] args)
{
// 创建一个数组并赋值
int[] arr = new int[6] { 10, 29, 19, 35, 3, 66 };
// 创建一个空数组
int[] arr2 = new int[6];
// 获取数组的长度
Console.WriteLine("数组 arr 的长度为:" + arr.Length);
// 为数组排序
Array.Sort(arr);
Console.Write("排序后的数组 arr 为:");
// 打印排序后的 arr
PrintArray(arr);
// 查找数组元素的索引
Console.WriteLine("\n数组 arr 中值为 29 的元素的索引为:" + Array.IndexOf(arr, 29));
// 拷贝 arr 到 arr2
Array.Copy(arr, arr2, arr.Length);
Console.Write("打印数组 arr2:");
// 打印数组 arr2
PrintArray(arr2);
Array.Reverse(arr);
Console.Write("\n反序排列数组 arr: ");
PrintArray(arr);
}
// 遍历数组元素
static void PrintArray(int[] arr)
{
foreach (Object elem in arr)
{
Console.Write(elem + " ");
}
}
}
}
创建 string 对象:
通过给 String 变量指定一个字符串
通过使用 String 类构造函数
通过使用字符串串联运算符( + )
通过检索属性或调用一个返回字符串的方法
通过格式化方法来转换一个值或对象为它的字符串表示形式
using System;
namespace Notes
{
class Program
{
static void Main(string[] args)
{
//通过给 String 变量指定一个字符串
string strA = "C";
string strB = "#";
//通过使用 String 类构造函数
Char[] strChars = { 'C', '#' };
string strC = new string(strChars);
//通过使用字符串串联运算符( + )
string strD = strA + strB;
//通过检索属性或调用一个返回字符串的方法
string strE = StringFunction();
//通过格式化方法来转换一个值或对象为它的字符串表示形式
DateTime dt = DateTime.Now;
string strF = string.Format("现在的时间是 {0:t} {0:D}", dt);
Console.ReadKey();
}
public static string StringFunction()
{
return "通过调用一个返回字符串的方法";
}
}
}
using System;
namespace Notes
{
class Program
{
static void Main(string[] args)
{
string strA = "ABC";
int length = strA.Length;
Console.WriteLine("当前的字符串对象中字符数:" + length);
Console.WriteLine("当前字符串对象中获取索引为1的字符:" + strA[1]);
Console.ReadKey();
}
}
}
序号 |
方法名称 & 描述 |
1 |
public static int Compare( string strA, string strB ) 比较两个指定的 string 对象,并返回一个表示它们在排列顺序中相对位置的整数。该方法区分大小写。 |
2 |
public static int Compare( string strA, string strB, bool ignoreCase ) 比较两个指定的 string 对象,并返回一个表示它们在排列顺序中相对位置的整数。但是,如果布尔参数为真时,该方法不区分大小写。 |
3 |
public static string Concat( string str0, string str1 ) 连接两个 string 对象。 |
4 |
public static string Concat( string str0, string str1, string str2 ) 连接三个 string 对象。 |
5 |
public static string Concat( string str0, string str1, string str2, string str3 ) 连接四个 string 对象。 |
6 |
public bool Contains( string value ) 返回一个表示指定 string 对象是否出现在字符串中的值。 |
7 |
public static string Copy( string str ) 创建一个与指定字符串具有相同值的新的 String 对象。 |
8 |
public void CopyTo( int sourceIndex, char[] destination, int destinationIndex, int count ) 从 string 对象的指定位置开始复制指定数量的字符到 Unicode 字符数组中的指定位置。 |
9 |
public bool EndsWith( string value ) 判断 string 对象的结尾是否匹配指定的字符串。 |
10 |
public bool Equals( string value ) 判断当前的 string 对象是否与指定的 string 对象具有相同的值。 |
11 |
public static bool Equals( string a, string b ) 判断两个指定的 string 对象是否具有相同的值。 |
12 |
public static string Format( string format, Object arg0 ) 把指定字符串中一个或多个格式项替换为指定对象的字符串表示形式。 |
13 |
public int IndexOf( char value ) 返回指定 Unicode 字符在当前字符串中第一次出现的索引,索引从 0 开始。 |
14 |
public int IndexOf( string value ) 返回指定字符串在该实例中第一次出现的索引,索引从 0 开始。 |
15 |
public int IndexOf( char value, int startIndex ) 返回指定 Unicode 字符从该字符串中指定字符位置开始搜索第一次出现的索引,索引从 0 开始。 |
16 |
public int IndexOf( string value, int startIndex ) 返回指定字符串从该实例中指定字符位置开始搜索第一次出现的索引,索引从 0 开始。 |
17 |
public int IndexOfAny( char[] anyOf ) 返回某一个指定的 Unicode 字符数组中任意字符在该实例中第一次出现的索引,索引从 0 开始。 |
18 |
public int IndexOfAny( char[] anyOf, int startIndex ) 返回某一个指定的 Unicode 字符数组中任意字符从该实例中指定字符位置开始搜索第一次出现的索引,索引从 0 开始。 |
19 |
public string Insert( int startIndex, string value ) 返回一个新的字符串,其中,指定的字符串被插入在当前 string 对象的指定索引位置。 |
20 |
public static bool IsNullOrEmpty( string value ) 指示指定的字符串是否为 null 或者是否为一个空的字符串。 |
21 |
public static string Join( string separator, string[] value ) 连接一个字符串数组中的所有元素,使用指定的分隔符分隔每个元素。 |
22 |
public static string Join( string separator, string[] value, int startIndex, int count ) 连接一个字符串数组中的指定位置开始的指定元素,使用指定的分隔符分隔每个元素。 |
23 |
public int LastIndexOf( char value ) 返回指定 Unicode 字符在当前 string 对象中最后一次出现的索引位置,索引从 0 开始。 |
24 |
public int LastIndexOf( string value ) 返回指定字符串在当前 string 对象中最后一次出现的索引位置,索引从 0 开始。 |
25 |
public string Remove( int startIndex ) 移除当前实例中的所有字符,从指定位置开始,一直到最后一个位置为止,并返回字符串。 |
26 |
public string Remove( int startIndex, int count ) 从当前字符串的指定位置开始移除指定数量的字符,并返回字符串。 |
27 |
public string Replace( char oldChar, char newChar ) 把当前 string 对象中,所有指定的 Unicode 字符替换为另一个指定的 Unicode 字符,并返回新的字符串。 |
28 |
public string Replace( string oldValue, string newValue ) 把当前 string 对象中,所有指定的字符串替换为另一个指定的字符串,并返回新的字符串。 |
29 |
public string[] Split( params char[] separator ) 返回一个字符串数组,包含当前的 string 对象中的子字符串,子字符串是使用指定的 Unicode 字符数组中的元素进行分隔的。 |
30 |
public string[] Split( char[] separator, int count ) 返回一个字符串数组,包含当前的 string 对象中的子字符串,子字符串是使用指定的 Unicode 字符数组中的元素进行分隔的。int 参数指定要返回的子字符串的最大数目。 |
31 |
public bool StartsWith( string value ) 判断字符串实例的开头是否匹配指定的字符串。 |
32 |
public char[] ToCharArray() 返回一个带有当前 string 对象中所有字符的 Unicode 字符数组。 |
33 |
public char[] ToCharArray( int startIndex, int length ) 返回一个带有当前 string 对象中所有字符的 Unicode 字符数组,从指定的索引开始,直到指定的长度为止。 |
34 |
public string ToLower() 把字符串转换为小写并返回。 |
35 |
public string ToUpper() 把字符串转换为大写并返回。 |
36 |
public string Trim() 移除当前 String 对象中的所有前导空白字符和后置空白字符。 |
结构体也被称为结构类型,是一种可封装数据和相关功能的值类型,在语法上结构体与类非常相似,它们都可以用来封装数据,并且都可以包含成员属性和成员方法。
struct 结构体名字
{
//主体
}
注:
结构可带有方法、字段、索引、属性、运算符方法和事件。
结构可定义构造函数,但不能定义析构函数。但是,不能为结构定义无参构造函数。无参构造函数(默认)是自动定义的,且不能被改变。
与类不同,结构不能继承其他的结构或类。
结构不能作为其他结构或类的基础结构。
结构可实现一个或多个接口。
结构成员不能指定为 abstract、virtual 或 protected。
使用 New 操作符创建一个结构对象时,会调用适当的构造函数来创建结构。与类不同,结构可以不使用 New 操作符即可被实例化,如果不使用 New 操作符,只有在所有的字段都被初始化之后,字段才被赋值,对象才被使用。
枚举是一组命名整型常量。枚举类型是使用 enum 关键字声明的。 C# 枚举是值类型。换句话说,枚举包含自己的值,且不能继承或传递继承。
enum 枚举名字
{
//枚举选项
}
enum Days { Sun, Mon, tue, Wed, thu, Fri, Sat };