[C# 数组]-C# 之中的一维数组和对象数组

##################################################

目录

一维数组

C# 中的一维数组

声明数组

初始化数组

访问数组

数组长度

对象数组

对象数组是干嘛的

对象数组存储原理

数组对象测试程序

学生类


##################################################

一维数组

——————————

C# 中的一维数组

        我们在 Java 中接触过数组
        想想看 我们在什么情况下会用到数组?
        答案是:

我们需要使用同一类型的多个值 这时就需要用到数组了

        C# 中的一维数组与 Java 不同 不过也很简单
        对了 什么叫一维数组? 我记得曾经说过一次
        有一维就有多维 不过现在距离我们有些遥远 也暂时用不到

——————————

声明数组

        在 Java 中是怎样声明数组的呢?
        还想的起来吗?
        哈哈 正常 我们常用的有两种形式:

数据类型[] 数组名;
数据类型 数组名[];

        但是在 C# 中只有一种方式声明数组:

数据类型[] 数组名;

        那就是不能把方括号放在数组名的后面!

        示例 声明数组 array 数组类型为整型:

int[] array;

——————————

初始化数组

        不过 C# 中的数组和 Java 初始化数组的语法是一样的!

        创建一个含有 10 个整型数组的数组:

int[] array = new int[10] { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 };

        省略数组长度创建数组的语法也同 Java 一样:

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

        或者省略 new 关键字:

int[] arr_2 = { 0, 1, 2 };

        是不是跟 Java 的初始化一样?

        第一条语句声明并初始化了一个长度为 10 的整型数组 array 并且给数组中的每个元素都赋了初值

        这三条语句的区别也是很明显 第一条语句声明了:

[10]

        那么数组长度就由方括号来决定:

数据类型[] 数组名 = new 数据类型[值个数] { 值列表 };

        第二条、第三条语句的作用是完全一样的

        没有用方括号指定长度 那数组长度就由大括号中的初值个数决定:

数据类型[] 数组名 = new 数据类型[] { 值列表 };

        是不是很好理解?

——————————

访问数组

        同 Java 也是下标概念

        也从 0 下标开始:

数组名 [下标]

        不过 C# 将之称之为

索引

——————————

数组长度

        在 C# 中需要得到数组的长度时 不应该是用数组定义的长度

        而是使用:

数组名.Length

        语句获得

        跟 Java 的 .length 类似 不过首字母却是大写

##################################################

对象数组

——————————

对象数组是干嘛的

        眼熟啵?
        曾经你怎么也想不通的对象数组!

整型数组 是用来储存 数字 的
字符数组 是用来储存 汉字 的
那么 对象数组 就是用来储存 对象 的!

        对象 是 类 的一个实例
        就是说 对象 是通过 类 创造出来的一个 东东
        我们就是要储存这个创造出来的 对象/东东

——————————

对象数组存储原理


        类 里面有什么:

特征/字段
行为/方法

        那么这个 对象 就是 类 中的一个
        每个 对象 都有一组独特的 特征/字段
        所有 类 能干的事/行为/方法 这个 对象 也能干

        就是说 这些实例化出来的一个个 对象 之间
        区别就是这组 特征/字段

        我们也可以这样想 储存的 一个个 对象
        储存的都是 一个个 特征/字段

——————————

数组对象测试程序

%%%%%

学生类

        示例 我们用 C# 写一个程序 思路如下:

分为 Program/主类、Student/学生类 两个类 主类只有一个 Main() 方法
学生类有 name/姓名、age/年龄 特征 还有一个 show()/输出信息 的功能
然后我们定义对象数组 stus 来分别储存对象 stus[N]
然后分别实例化一个个对象 挨个赋值储存到对象数组 

        最后的 demo 如下:

学生的信息为 >>>
姓名_老姐姐     年龄_38
姓名_小老弟     年龄_6
姓名_李二哈     年龄_7
姓名_李三岁     年龄_3
姓名_李白眼     年龄_1

        先看看没有注释的代码:

namespace _10.数组对象_学生类
{
    public class Program
    {
        static void Main(string[] args)
        {
            Student[] stus = new Student[5];
                stus[0] = new Student();
                stus[0].name = "老姐姐";
                stus[0].age = 38;
                stus[1] = new Student();
                stus[1].name = "小老弟";
                stus[1].age = 6;
                stus[2] = new Student();
                stus[2].name = "李二哈";
                stus[2].age = 7;
                stus[3] = new Student();
                stus[3].name = "李三岁";
                stus[3].age = 3;
                stus[4] = new Student();
                stus[4].name = "李白眼";
                stus[4].age = 1;
            Console.WriteLine("学生的信息为 >>> ");
            foreach (Student stu in stus)
            {
                stu.show();
            }
            Console.ReadLine();
        }
    }

    class Student
    {
        public string name;
        public int age;

        public void show()
        {
            Console.WriteLine("姓名_{0}\t年龄_{1}", name, age);
        }
    }
}

        仔细讲解一下

        先看学生类 code:

class Student
{ /* 学生类 */
	public string name;    // 特征 学生姓名字段
	public int age;    // 特征 学生年龄字段

	public void show()
	{ /* 行为 自我介绍方法 */
		Console.WriteLine("姓名_{0}\t年龄_{1}", name, age);
	}
}

        程序类 code:

public class Program
{ /* 程序类 */
	static void Main(string[] args)
	{ /* 程序入口 */
		/* 定义对象数组 stus 能储存 5 个对象 */
		Student[] stus = new Student[5];
			/* 分别实例化储存对象 然后为对象数组元素赋值 */
			/* 数组 stus 储存的第一个对象 stu[0] */
			stus[0] = new Student();    /* 创建 stus 对象数组索引为 1 的对象 */
			stus[0].name = "老姐姐";    /* stus 对象数组索引为 1 的对象的姓名 */
			stus[0].age = 38;    /* stus 对象数组索引为 1 的对象的年龄 */
			/* 数组 stus 储存的第二个对象 stu[1] */
			stus[1] = new Student();
			stus[1].name = "小老弟";
			stus[1].age = 6;
			/* 数组 stus 储存的第三个对象 stu[2] */
			stus[2] = new Student();
			stus[2].name = "李二哈";
			stus[2].age = 7;
			/* 数组 stus 储存的第四个对象 stu[3] */
			stus[3] = new Student();
			stus[3].name = "李三岁";
			stus[3].age = 3;
			/* 数组 stus 储存的第五个对象 stu[4] */
			stus[4] = new Student();
			stus[4].name = "李白眼";
			stus[4].age = 1;
		/* 遍历对象数组 */
		Console.WriteLine("学生的信息为 >>> ");
		foreach (Student stu in stus)
		{
			stu.showInfo();
		}
		/* 输入任意信息回车以结束 */
		Console.ReadLine();
	}
}

        此时 对象数组 stus 中的每个元素都是一个 Student/学生 对象!

        每个 Student/学生 对象有不同的 姓名、年龄 !

  • 2
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

燃吹

呜呜呜没钱钱吃饭了……

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值