之前学习了基本数据类型,接下来有控制流与集合类型
控制流
其实控制流部分与c++类似,选择语句的if-else语句,switch语句等等就不再赘述了。
集合类型
C#的集合类型与C++还是有所不同。
数组
elementType[] name=new elementType[numberOfElements];
- 数组变量需要指定所含元素类型,一对方括号,和唯一的名称。
- new 关键字用于在内存中创建数组。
- 数组将储存的元素数位于第二个方括号内。
以下两种代码初始化均有效
int a[]=new int[]{1,2,3};
int b[]={1,2,3};
范围异常
在索引超出数组范围后,控制台会生成一个针对此种情况名为IndexOutOfException的报销
列表
列表与数组密切相关,类似于python内置的列表,具有类似的性质。它在单个变量中收集多个相同类型的值,在添加,删除和更新元素时,列表更容易处理,但元素不是按照顺序储存的,有时会导致比数组更高的性能成本。
List<elementType> name =new List<elementType>();
- List 关键词,后有一对包含元素类型的尖括号,以及唯一的名称。
- new 关键字初始化内存,后紧跟一对包含元素类型的尖括号。
与数组一样,可以在声明变量中通过在一对大括号内添加元素值来初始化列表。
常用方法有经典的Add(),Insert(),Remove()。
字典
声明字典与声明列表几乎相同,但增加了一个细节,键和值的类型都需要在尖括号里指定。
Dictionary<keyType,valueType> name=new Dictionary<keyType,valueType>();
要实现初始化字典,请执行以下操作:
Dictionary<keyType,valueType> name=new Dictionary<keyType,valueType>()
{
{key1, value1},
{key2, value2}
};
具体方法可以参考python字典。
至此,有关集合的内容告一段落,进入下一个重要的主题:迭代语句。
迭代语句
for循环
类C++,不再赘述。
foreach 循环
foreach循环获取集合中的每一个元素,并将其储存在局部变量中,使其在语句中可以被访问。局部变量类型必须与集合元素类型匹配才能正常工作。
foreach循环可用于数组和列表,但是对于字典尤为有效,因为其不基于数字索引。
foreach(elementType localName in collectionVariable)
{
code block;
}
要在局部变量中捕获键值对,需要使用KeyValuePair类型,并分配键和值类型以匹配字典的相应类型。
Dictionary<char,int> temp=new Dictionary<char,int>()
{
{'a',1};
{'b',2};
{'c',3}
}
foreach(KeyValuePair<char,int> kvp in temp)
{
Debug.LogFormat("char:{0}-number {1}",kvp.key,kvp.Value);
}
感觉上也十分类似python的for循环。
while循环
类C++,不再赘述。