变量的更多内容
类型转换
一般情况下,不同类型变量使用不同的模式来表示数据。这意味着,即使可以把一系列的位从一种类型的变量移动到另一种类型的变量中,结果可能也与期望的不同。因此需要进行类型转换。类型转换分为两种形式,分别是
隐式转换:从类型A到类型B的转换可以在所有的情况下进行,执行的规则非常简单,可以让编译器执行转换,
显示转换:从从类型A到类型B的转换只能在某种情况下进行,转换规则比较复杂,应进行某种类型的额外处理。
隐式转换的规则很简单只要转换类型A的取值范围完全包含在类型B中就可以将A隐式转换成B。
显示转换:明确要求编译器将一种类型转换为另一种类型,(destinationType)source,强制类型转换只有在类型之间有关系时才有用。
常用的显示转换的方法有Convert.ToString()转化为字符串
复杂变量类型
枚举
有时希望变量的取值是一个固定集合中的值,例如让orientation类型可以存储north、west、east、south中的一个值。这时候可以使用枚举变量。
定义枚举:
enum<typeName>
{
<value1>;
<value2>;
<value3>;
...
<valueN>
}
//接着申明这个变量
typeName varName;
varName = typeName.<value>;
枚举使用一个基本类型来存储,默认情况下该类型为int,默认情况下每个值都会根据定义的顺序从0开始被自动赋值为对应的基本类型值。
要获得枚举值的字符串值,可以使用Convert.ToString(),同时也可以把字符串值转化为枚举值,但其语法要稍微复杂一些。使用的是Enum.Parse()。的命令例子如下
string myString = "north";
orientation myDirection = (orientation)Enum.Parse(typeof(orientation),myString);
结构
结构定义如下
struct <typeName>
{
<memberDeclarations>
}
memberDeclarations部分包含变量的声明,每个变量的声明都采用如下的形式
<accessiability> <type> <name>
其中accessiability为可访问性
数组
声明数组
<baseType>[] <name>;
其中baseType可以是任意变量类型,包括枚举和结构,数组在访问前必须初始化。
数组初始化的方法有两种,可以字面值形式指定数组的完整内容,也可以指定数组的大小,再使用关键字new初始化所有的数组元素。
使用字面值指定数组
int[] myIntArray = {4,5,3,6,7};
另一种方法需要使用new关键字
int[] myIntArray = new int[5];
这种使用new关键字显式的初始化数组的方法会给所有数组元素赋予同一个初始值0。
如果使用变量定义数组大小,该变量必须是一个常量
const int arraySize = 5;
int[] myIntArray = new int[arraySize] {2,3,4,5,6};
如果忽略关键字const,那么这段代码会运行错误
使用foreach循环访问数组的每一个元素
foreach (<baseType> <name> in <array>)
{
//can use <name> for each element
}
这个循环会迭代每一个元素,依次把每一个元素放在变量name中,并且不存再非法访问的风险。不需要考虑数组中有多少元素,并且可以确保将在循环中使用每一个元素。例子如下
string[] names ={“hello”,“hihi”}
foreach(string name in names)
{
WriteLine(“name”);
}
使用这种方法和标准的for循环的主要区别在于foreach循环对数组内的内容进行只读访问,所以不能改变任何元素的值
使用switch case进行模式匹配
C#7可以基于变量的类型(如string,integer数组)再switch case中进行模式匹配因为变量的类型是已知的,所以可以访问该类型提供的方法和属性
switch (testVal)
{
case int value:
<code to execute if testVal is an int>;
break;
case string s when s.length==0
<code to execute if testVal is a string with a length =0>
break;
...
default:
<code to execute if testVal!=comparisionVals>
break;
}
常用的字符串处理
string类型的变量可以看成是char类型的只读数组可以使用
string myString = “A String”;
char myChar = myString[1];
但不能采用这种方式为各个字符赋值,为获得一个可写的char数组,可以使用下列代码,其中使用了数组变量的**ToCharArray()**命令
string myString = “A String”;
char[] myChars = myString.ToCharArray();
myString.Length()//求字符串的长度
myString.ToUpper()//将字符串字符全部变成大写
myString.ToLower()//将字符串的字符全部变成小写
myString.Trim()//删除字符串前后的空格
myString.Trim(trimchars)//删除trimchars数组中包含的字符元素
myString.TrimEnd()//删除字符串后面的空格
myString.TrimStart()//删除字符串前面的空格
myString.PadLeft()//在字符串左边添加空格是字符串达到指定的长度
myString.PadLeft(10);
myString.PadLeft(10,'-');//添加指定的字符
209

被折叠的 条评论
为什么被折叠?



