C#入门2

目录

类型转换

隐式

显示

高级变量

枚举

结构

数组

字符串处理

修改单个字符

替换文本

删除文本

去除空格

添加空格

替换大小写


本篇主要介绍一下高级的变量类型

类型转换

隐式

Type A中的值都包含在Type B中,A可以隐式的替换为Type B

显示

  1. 类型转换注意值是否有溢出,可以使用checked/unchecked关键字,如checked((byte)var)如果有溢出就会报错
  2. Convert中的类型转换函数

高级变量

枚举

用enum定义枚举变量

enum<typeName>
{
    <value1>,
    <value2>,
    ...
    <valueN>
}

声明

<typeName> <varName>;

赋值

<varName> = <typeName>.<value>;

枚举默认基本存储类型为int,要想指定其他基本类型,可在声明中添加类型

enum<typeName>:<underlyingType>
{
    <value1>;
    <value2>;
    ...
    <valueN>
}

默认,枚举定义的值关联int从0开始,且按文本顺序递增1,及<value2>=<value1>+1,也可重写赋值过程,使用=指定每个枚举实际值

enum<typeName>:<underlyingType>
{
    <value1>=<actualVal1>;
    <value2>=<actualVal2>;
    ...
    <valueN>=<actualValN>;
}

结构

使用struct定义结构

struct<typeName>
{
    //<memberDeclatations>
    <accessibility> <type> <name>;
}

//定义结构变量
<typeName> name;


//实例
struct route
{
    public orientation direction;
    public double distance;
}

//定义结构变量
route myRoute;

数组

声明

<baseType>[] <name>;

数组初始化有两种方式:

  1. 字面值指定完整内容
  2. 指定数组大小后使用new关键字初始化所有数组元素
//字面值指定
int[] myIntArray = {5,9,10,2,99};

//new初始化
int[] myIntArray = new int[5];

Note:

  1. 使用new显示初始化数组会给所有数组元素赋一个相同的默认值,数值类型是0
  2. 使用非常量的变量初始化
  3. 当组合两种方式定义,则该变量必须为常量,且赋值元素需和new指定大小相同
//非常量初始化
int arraySize = 5;
int[] myIntArray = new int[arraySize]

//两种结合
int[] myIntArray = new int[5]{1,2,3,4,5};

//下面是错误的
int[] muIntArray = new int[5]{1}; //大小不匹配

//除非arraySize声明为const否则是错误的
int[] myIntArray = new int[arraySize]{1,2,3,4,5}; 

array.Length 可以得到数组大小

特别的数组必须在访问前初始化,下面的赋值是错误的

int[] myIntArray;
myIntArray[10] = 5;

foreach可以只读的访问数组

foreach(<baseType><name> in <array>)
{
    //can use <name> for each element
}

//实例
foreach(string firendName in firends)
{
    WriteLine(firendName);
}

多维数组

声明:使用,声明

//二维数组
<baseType>[,] <name>;
//四维数组
<baseType>[,,,] <name>;

数组初始化

//声明一个x*y的二维数组
<baseType>[,] <name> = new <baseType>[x,y]

int [,] location = new int[3,4]

//隐式表示大小~一个3*3大小的二维数组
int [,] location = {
   
   {1,2,3},{4,5,6},{7,8,9}};

访问,指定每个坐标即可

location[1,1];

foreach遍历多维数组和一维方式相同

数组的数组

声明:使用多个[]

<baseType>[][] <name>

int[][] data;

初始化

//基础
<name> = new <baseType>[x][];
<name>[0] = new <baseType>[y0];
...
<name>[N] = new <baseType>[yN];


//实例
data = new int[2][];
data[0] = new int[3];
data[1] = new int[4];

//也可以用字面值赋值
data = new int[2][]{
    new int[]{1,2,3},
    new int[]{4,5}
};

//隐式第一维初始化
int[][] data = {
    new int[]{1,2,3},
    new int{4,5}
};

foreach的遍历和多维数组不同,通常需要嵌套

foreach(int[] nums in data)
{
    foreach(int num in nums)
    {
        WriteLine(num);
    }
}

字符串处理

string可以看成char的只读数组(即字符串不可变),支持下标访问

string myString = "a string";
char myChar = myString[0];

修改单个字符

不能在原string上操作,需要从字符串生成字符数组,修改数组中的内容,然后从数组的已修改内容创建新字符串。使用String.ToCharArray()方法来创建字符数组。

string myString = "a string";
char[] myChars = myString.ToCharArray();

替换文本

使用String.Replace()方法来替换文本,该方法可替换字符串或单个字符,且搜索文本的每个匹配项均被替换。需要注意该替换不会改变原始字符串,想要保留改变后的字符串,需要创建一个新字符串保存。

string myString = "A string";
string myNewString = myString.Replace("A","New");

note:更高级的替换查找可以查阅正则表达式的相关内容。

删除文本

使用String.Remove()方法删除字符串中的文本,此方法移除特定索引处开始的某些字符。

string myString = "A string";
string removeString = "A";
int i = myString.IndexOf(removeString);
string result = string.Empty;
if(i>=0)
{
    result = myString.Remove(i,removeString.Length);
    //输出 string
    Console.WriteLine(result);
}

Note:

  1. String.IndexOf("str")方法查找str在string中的起始索引
  2. string.Length返回字符串中字符的数量
  3. string.Empth返回一个空字符串

去除空格

使用String.Trim(),String.TrimStart(),String.TrimEnd()方法删除前/后置空格。使用该方法原字符串内容保持不变,保留修改内容需要创建新的字符串。此外也可指定删除其他前置或后置字符。

string myString = "  A string  ";

//删除前/后置空格
string myNewString = myString.Trim();

//删除前置空格
string myNewString = myString.TrimStart();

//删除后置空格
string myNewString = myString.TrimEnd();

//删除其他字符,在一个char数组中指定
char[] trimChars = {' ','s'}
string myNewString = myString.Trim(trimChars);    //删除前后空格,字符s

添加空格

和上面类似,使用String.PadLeft()和StringPadRight()方法可以在字符串左右添加空格使字符串达到指定长度,也可以添加指定的字符,但是是使用char字符指定而非char数组

string myString = "A string";
//在左边添加两个空格
myString = myString.PadLeft(10);
//在左边添加两个 - 
myString = myString.PadLeft(10,'-');

替换大小写

使用String.ToLower()和String.ToUpper()方法替换字符串大小写

string myString = Console.ReadLine();
if(myString.ToLower() == "yes")
{
     Console.WriteLine("yes");   
}
//使用上面的方法可以检查输入为 YES,Yes,yEs...等形式的字符串

猜你喜欢

转载自blog.csdn.net/wyzworld/article/details/112513407