用户:天上的流星_tianqiVirus查看:0 回复:0 评论:0 创建时间:2020-07-17T20:20:08
C#初入门
C#学习记录
by 天上的流星
我这个帖子既有教程性质,又是对于我复习C#的重要方法
不管有没有人看,我都会每两周更新
我这一些时间研究了一下C#的列表,即数组
了解了列表的基本用法
我们此时用python与C#互相解释,比较的方法来讲解
在最开始,我先解释下
如非特别提示,本文以下所有的C#代码都在main主函数内,即:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace CsharpStudy_Array2
{
class Program
{
static void Main(string[] args)
{
//这里是代码的位置
}
}
顺便一提,C#单行注释为在开头加上//,多行注释为开头/*和结尾*/
接下来我们开始
python的列表生成长这样:
List1 = [1,2,3,4,5]
C#的是这样:
int[] List1 = {1,2,3,4,5};
可见C#列表生成,或者说列表初始化,格式如下
数据类型[] 列表名字 = {元素1,元素2,元素3,......};
特别注意,列表内部元素的数据类型,必须为开头写的数据类型
也就是说,python中的
List1 = [1,2,"hello","codemao"]
在C#中是行不通的
还有一种初始化列表的方式,即
int[] List1 = new int[10];
这指,初始化一个长度为10的整型数组
此时,该代码相当于:
int[] List1 = {0,0,0,0,0,0,0,0,0,0};
因为整型变量初始化值为0
这是普通的整型数组初始化的方式,字符串,浮点数等数据类型同理
接下来,我们来介绍二维数组
python中,二维数组即
List2 = [[1,2],[3,4]]
C#的二维数组:
int[2,2] List2 = {{1,2},{3,4}};
此时,你可以将python的[]理解为C#的{}
同理,此时二维数组也可以通过new初始化,即
int[,] List2 = new int[2, 2];
List2 = {{1,2},{3,4}};
请注意,这里的int[,]中是有逗号的
就是说int[]中的逗号数量+1就是数组的维度
三位数组,四维数组等同理
接下来来介绍下如何使用数组
数组之使用,与python十分相似
python中一个二维列表,第一行第二列的元素的调用如下
List2 = [[1,2],[3,4]] #这个是生成列表
num = List2[0][1] #这个是调用
C#同样的数组元素调用如下
int[,] List2 = new int[2, 2] { { 1, 2 }, { 3, 4 } }; //生成列表
int num1 = List2[0,1]; //调用元素
两这差别仅在[0][1]和[0,1]上,两者索引都以0开始,即0为第一个,1为第二个
再如,C#中三维数组,第1行第2列第3纵深的元素调用方法为List3[0,1,2]
一维数组第3个元素调用为List3[2]
其他一维数组,高维数组同理
以上就是数组的初始化及使用
如果我的二维数组,是不规则的,如
那么这种数组声明,就是先创建一个总的数组,然后把三个小数组装进去
如下
int[][] List2 = new int[3][];
List2[0] = new int[3] { 1, 3, 7 };
List2[1] = new int[2] { 2, 8 };
List2[2] = new int[4] { 6, 15, 23, 4 };
值得注意的是,之前二维数组的int[,]变成了int[][]
而调用也产生了变化
如,我要调用List2的第一行的第三个元素,如下
int num1 = List2[0][2];
而非
int num1 = List2[0,2];
而两者是不相通的,两者不能互相代替
和python一样,C#的数组也有长度,也有调用数组指定维度中的上界和下界
先来说说数组的长度,调用数组长度数据如下
int[] List3 = new int[3] { 1, 2, 3 };
int num2 = List3.Length;
注意,长度数据为整型,所以要用整型变量来接受
接下来来介绍下上下界的调用方法
int[] List3 = new int[3] { 1, 2, 3 };
int num2 = List3.GetLowerBound(0);
GetLowerBound方法用处如下
括号内的参数,是数组指定的维度,在一维数组中一般为0,多维数组另当别论
同理,求上界也是用同样方法,只不过GetLowerBound改为GetUpperBound,即
所谓下界,就是数组的首元素索引,上界就是尾元素索引
个人感觉上下界目前作用不大,毕竟数组上界就是长度-1嘛
但是可能会在多维数组中发挥作用
因为多维数组难以直接调用某一行,进而难以取得它的长度
此时上界就体现了它的重大作用
如下,调用二维数组第二个维度的上界
int[,] List2 = new int[2, 2] { { 1, 2 }, { 3, 4 } };
int num2 = List2.GetUpperBound(1);
是可行的,而:
int[,] List2 = new int[2, 2] { { 1, 2 }, { 3, 4 } };
int num2 = List2[0].Length;
是不可行的,错在List2[0]
特别注意
之前的这个数组
这个数组,只是一维数组
所以在这个数组使用GetUpperBound(1)是不可行的
这也是
int[,] List2 = new int[2, 2] { { 1, 2 }, { 3, 4 } };
与
int[][] List2 = new int[2][];
List2[0] = new int[2] { 1, 2 };
List2[1] = new int[2] { 3, 4 };
不等价
至此,我们可以很清晰地发现C#的列表与python差别巨大
这一篇的内容需要长时间理解
这就是C#数组的声明,使用的方式
如有不足,还请大家谅解指出,我必定改正
谢谢大家