分享
 
 
 

C#数组篇讲解

王朝c#·作者佚名  2006-01-09
窄屏简体版  字體: |||超大  

继续上回,数组是我们经常用到的,我来介绍一下:数组是具有相同类型的一组数据。当访问数组中的数据时,可以通过下标来指明。c#中数组元素可以为任何数据类型,数组下标从0开始,即第一个元素对应的下标为0,以后逐个递增。数组可以一维也可多维。

//包含6个元素的一维整数数组;

int[] mf1=new int[6]; //注意初始化数组的范围,或者指定初值;

//包含6个元素的一维整数数组,初值1,2,3,4,5,6

int[] mf2=new int[6]{1,2,3,4,5,6};

//一维字符串数组,如果提供了初始值设定项,则还可以省略 new 运算符

string[] mf3={"c","c++","c#"};

//一维对象数组

Object[] mf4 = new Object[5] { 26, 27, 28, 29, 30 };

//二维整数数组,初值mf5[0,0]=1,mf5[0,1]=2,mf5[1,0]=3,mf5[1,1]=4

int[,] mf5=new int[,]{{1,2},{3,4}};

//6*6的二维整型数组

int[,] mf6=new mf[6,6];

下面来看一个一维字符串数组的遍历

using System;

public class MikeCat

{

static void PrintArray(string[] arr)

{

//打印数组元素,arr.Length 表示数组元素的个数

for(int i=0;i<arr.Length;i++)

{

Console.WriteLine("arr[{0}]={1}",i,arr[i]);

}

}

public static void Main()

{

string[] arr={"c","c++","c#"};

//将数组作为一个参数传递

PrintArray(arr);

}

}

程序结果:arr[0]=c arr[1]=c++ arr[2]=c#

下面来看一个4行2列(4*2)的整型数组的遍历:

using System;

public class MikeCat

{

static void PrintArray(int[,] arr)

{

//通过两次FOR循环遍历二维数组

for(int i=0;i<4;i++)//初始化i作为循环变量,i++实现该变量的自增运算。

//for循环满足条件后执行完循环体一次后执行i++,然后进入下次循环。简单的c语法,这里做简单介绍照顾初学者。(详细可参阅谭浩强先生的c语言程序设计一书)

{

for(int j=0;j<2;j++)

{

Console.WriteLine("arr[{0},{1}]={2}",i,j,arr[i,j]);//打印每个二维数组元素

}

}

}

public static void Main()

{

//主函数

//将数组作为一个参数传递

PrintArray(new int[,]{{1,2},{3,4},{5,6},{7,8}};

}

}

运行结果:arr[0,0]=1 arr[0,1]=2 arr[1,0]=3 arr[1,1]=4 arr[2,0]=5 arr[2,1]=6 arr[3,0]=7 arr[3,1]=8

类是面向对象程序设计的基本构造块,详细我们在后面介绍。这里我们介绍两个特殊的类,即object类和string类

1.object类

object类是预定义类System.Object的别名,它是所有其他类型的基类。c#中所有类型都直接或间接从object类中继承。因此,一个object类的变量可以赋予任何类型的值。

int i=30;

object obj1;

obj1=i;

object obj2='a';

2.string类

string类专门用于对字符串的操作,他是预定义类System.String的别名

string str1="mikecat";

可以用"+"号连接两个字符串。

string str2="username:"+"mikecat";

如果访问单个字符,则要用下标。

char c=str1[0];

比较两个字符串是否相等,可用比较操作符"=="//有别于basic语法

bool b=(str1==str2);

c# 中,取消了c和c++中使用最灵活,也是最难掌握的指针。那么在c#中如何提供c/c++中的函数指针的功能?c#提供了委托(delegate),委托是继承自System.Delegate类的引用类型。它相当于函数指针原型。与函数指针不同的是,委托在c#中是类型安全的,委托特别适合于匿名调用。要使用委托需经过三个步骤,即声明、实例化、调用。

using System;

//声明一个名为mfDelegate的委托,该委托有一个string类型的参数

//c#编译器编译时会产生一个新类,该类继承自System.Delegate,类

//名为mfDelegate

public delegate void mfDelegate(string name);

public class MikeCat

{

//定义与mfDelegate有相同参数类型的方法Hello()

public static void Hello(string name)

{

Console.WriteLine("您好,{0}!",name);

}

//定义与mfDelegate有相同参数类型的方法GoodBye()

public static void GoodBye(string name)

{

Console.WriteLine("再见,{0}!",name);

}

public static void Main()

{

//创建一个mfDelegate实例 mf1

mfDelegate mf1=new mfDelegate(Hello);

//调用mf1

mf1("mikecat");

mfDelegate mf2=new mfDelegate(GoodBye);

mf2("mikecat");

//将mf1 mf2组合成一个新的委托mf3

mfDelegate mf3=mf1+mf2;

//调用mf3

mf3("迈克老猫");

//从组合的委托mf3中删除mf1

mfDelegate mf4=mf3-mf1;

mf4("mikecat");

}

}

程序结果:您好,mikecat!//mf1; 再见,mikecat!//mf2

您好,迈克老猫! 再见,迈克老猫!//mf3

再见,mikecat!//mf4

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
2023年上半年GDP全球前十五强
 百态   2023-10-24
美众议院议长启动对拜登的弹劾调查
 百态   2023-09-13
上海、济南、武汉等多地出现不明坠落物
 探索   2023-09-06
印度或要将国名改为“巴拉特”
 百态   2023-09-06
男子为女友送行,买票不登机被捕
 百态   2023-08-20
手机地震预警功能怎么开?
 干货   2023-08-06
女子4年卖2套房花700多万做美容:不但没变美脸,面部还出现变形
 百态   2023-08-04
住户一楼被水淹 还冲来8头猪
 百态   2023-07-31
女子体内爬出大量瓜子状活虫
 百态   2023-07-25
地球连续35年收到神秘规律性信号,网友:不要回答!
 探索   2023-07-21
全球镓价格本周大涨27%
 探索   2023-07-09
钱都流向了那些不缺钱的人,苦都留给了能吃苦的人
 探索   2023-07-02
倩女手游刀客魅者强控制(强混乱强眩晕强睡眠)和对应控制抗性的关系
 百态   2020-08-20
美国5月9日最新疫情:美国确诊人数突破131万
 百态   2020-05-09
荷兰政府宣布将集体辞职
 干货   2020-04-30
倩女幽魂手游师徒任务情义春秋猜成语答案逍遥观:鹏程万里
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案神机营:射石饮羽
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案昆仑山:拔刀相助
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案天工阁:鬼斧神工
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案丝路古道:单枪匹马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:与虎谋皮
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:李代桃僵
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:指鹿为马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:小鸟依人
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:千金买邻
 干货   2019-11-12
 
推荐阅读
 
 
 
>>返回首頁<<
 
靜靜地坐在廢墟上,四周的荒凉一望無際,忽然覺得,淒涼也很美
© 2005- 王朝網路 版權所有