对象数组,c#怎么定义对象数组?
对象数组,c#怎么定义对象数组?详细介绍
本文目录一览: 什么是对象数组有哪些特征与要素
对象数组就是数组里的每个元素都是类的对象,赋值时先定义对象,然后将对象直接赋给数组。关于对象数组,以下是由我整理关于对象数组的内容,希望大家喜欢!
对象数组的介绍
(1)类
具有相同或相似性质的对象的抽象就是类。因此,对象的抽象是类,类的具体化就是对象,也可以说类的实例是对象。
类具有属性,它是对象的状态的抽象,用数据结构来描述类的属性。
类具有操作,它是对象的行为的抽象,用操作名和实现该操作的 方法 来描述。
(2)类的结构
在客观世界中有若干类,这些类之间有一定的结构关系。通常有两种主要的结构关系,即一般--具体结构关系,整体--部分结构关系。
①一般——具体结构称为分类结构,也可以说是“或”关系,或者是“is a”关系。
②整体——部分结构称为组装结构,它们之间的关系是一种“与”关系,或者是“has a”关系。
(3)对象
对象是人们要进行研究的任何事物,从最简单的整数到复杂的飞机等均可看作对象,它不仅能表示具体的事物,还能表示抽象的规则、计划或事件。
(4)对象的状态和行为
对象具有状态,一个对象用数据值来描述它的状态。
对象还有操作,用于改变对象的状态,对象及其操作就是对象的行为。
对象实现了数据和操作的结合,使数据和操作封装于对象的统一体中
(5)消息和方法
对象之间进行通信的结构叫做消息。在对象的操作中,当一个消息发送给某个对象时,消息包含接收对象去执行某种操作的信息。发送一条消息至少要包括说明接受消息的对象名、发送给该对象的消息名(即对象名、方法名)。一般还要对参数加以说明,参数可以是认识该消息的对象所知道的变量名,或者是所有对象都知道的全局变量名。
对象数组的特征
(1)对象唯一性
每个对象都有自身唯一的标识,通过这种标识,可找到相应的对象。在对象的整个生命期中,它的标识都不改变,不同的对象不能有相同的标识。
(2)分类性
分类性是指将具有一致的数据结构(属性)和行为(操作)的对象抽象成类。一个类就是这样一种抽象,它反映了与应用有关的重要性质,而忽略其他一些无关内容。任何类的划分都是主观的,但必须与具体的应用有关。
(3)继承性
继承性是子类自动共享父类数据结构和方法的机制,这是类之间的一种关系。在定义和实现一个类的时候,可以在一个已经存在的类的基础之上来进行,把这个已经存在的类所定义的内容作为自己的内容,并加入若干新的内容。
继承性是面向对象程序设计语言不同于 其它 语言的最重要的特点,是其他语言所没有的。
在类层次中,子类只继承一个父类的数据结构和方法,则称为单重继承。
在类层次中,子类继承了多个父类的数据结构和方法,则称为多重继承。
在软件开发中,类的继承性使所建立的软件具有开放性、可扩充性,这是信息组织与分类的行之有效的方法,它简化了对象、类的创建工作量,增加了代码的可重性。
采用继承性,提供了类的规范的等级结构。通过类的继承关系,使公共的特性能够共享,提高了软件的重用性。
(4)多态性(多形性)
多态性使指相同的操作或函数、过程可作用于多种类型的对象上并获得不同的结果。不同的对象,收到同一消息可以产生不同的结果,这种现象称为多态性。
多态性允许每个对象以适合自身的方式去响应共同的消息。
多态性增强了软件的灵活性和重用性。
对象数组的要素
(1)抽象
抽象是指强调实体的本质、内在的属性。在系统开发中,抽象指的是在决定如何实现对象之前的对象的意义和行为。使用抽象可以尽可能避免过早考虑一些细节。
类实现了对象的数据(即状态)和行为的抽象。
(2)封装性(信息隐藏)
封装性是保证软件部件具有优良的模块性的基础。
面向对象的类是封装良好的模块,类定义将其说明(用户可见的外部接口)与实现(用户不可见的内部实现)显式地分开,其内部实现按其具体定义的作用域提供保护。
对象是封装的最基本单位。封装防止了程序相互依赖性而带来的变动影响。面向对象的封装比传统语言的封装更为清晰、更为有力。
(3)共享性
面向对象技术在不同级别上促进了共享:
①同一类中的共享
同一类中的对象有着相同数据结构。这些对象之间是结构、行为特征的共享关系。
②在同一应用中共享
在同一应用的类层次结构中,存在继承关系的各相似子类中,存在数据结构和行为的继承,使各相似子类共享共同的结构和行为。使用继承来实现代码的共享,这也是面向对象的主要优点之一。
③在不同应用中共享
面向对象不仅允许在同一应用中共享信息,而且为未来目标的可重用设计准备了条件。通过类库这种机制和结构来实现不同应用中的信息共享。
什么是对象数组
对象数组就是数组里的每个对象都是类的对象,赋值时先定义对象,然后将对象直接赋给数组就行了。
比如:
#include
using namespace std;
class A
{
int x;
int y;
}
void main()
{
A a1,a2;
A array[10];
array[0]=a1;
array[1]=a2;
}
java 对象数组定义是什么?
对象是类的一个实例(对象不是找个女朋友),有状态和行为。例如,一条狗是一个对象,它的状态有:颜色、名字、品种;行为有:摇尾巴、叫、吃等。
数组的三种定义方法
1.数组类型[] 数组名=new 数组类型[数组长度];
2.数组类型[] 数组名={数组0,数组1,数组2,数组3,....};
3.数组类型[] 数组名=new 数组类型[]{数组0,数组1,数组2,...};
Java作为一种面向对象语言。支持以下基本概念:
多态、继承、封装、抽象、类、对象、实例、方法、重载
Java 是由Sun Microsystems公司于1995年5月推出的高级程序设计语言。 Java可运行于多个平台,如Windows, Mac OS,及其他多种UNIX版本的系统。
Java是一门面向对象编程语言,不仅吸收了C++语言的各种优点,还摒弃了C++里难以理解的多继承、指针等概念,因此Java语言具有功能强大和简单易用两个特征。Java语言作为静态面向对象编程语言的代表,极好地实现了面向对象理论,允许程序员以优雅的思维方式进行复杂的编程 。
Java具有简单性、面向对象、分布式、健壮性、安全性、平台独立与可移植性、多线程、动态性等特点 。Java可以编写桌面应用程序、Web应用程序、分布式系统和嵌入式系统应用程序等
什么是对象数组 什么是数组对象
对象数组的本质是数组,数组里面存储的数据类型是某个类的对象。
而数组对象的本质是对象,也就是一个数组对象,也就是一个数组,这个数组里面存储的数据类型可以使各种各样的数据类型。
c#怎么定义对象数组?
test [] a; //这样就定义了一个数组
test [] a={new test(),new test()};//这样就定义了一个数组,并初始化,数组里面有两个 test类的实例。
List
listT = new List
();
二维
List
<list
> listT = new List
<list
>();
这种对象叫做泛型
List
就可以了吧
其实text[] 也行啊,只不过要初始化大小而已,List不需要初始化大小
如果按 采纳者 的方法
那么赋值时 就要初始化多个对象 因为list引用为地址引用,这样的话不如直接用对象数组
一、一维:
int[] numbers = new int[]{1,2,3,4,5,6}; //不定长
int[] numbers = new int[3]{1,2,3};//定长
二、多维
int[,] numbers = new int[,]{{1,2,3},{1,2,3}}; //不定长
int[,] numbers = new int[2,2]{{1,2},{1,2}}; //定长
三、例子
A:int[] mf1=new int[6];
//注意初始化数组的范围,或者指定初值; //包含6个元素的一维整数数组,初值1,2,3,4,5,6
int[] mf2=new int[6]{1,2,3,4,5,6};
B://一维字符串数组,如果提供了初始值设定项,则还可以省略 new 运算符
string[] mf3={"c","c++","c#"};
C://一维对象数组
Object[] mf4 = new Object[5] { 26, 27, 28, 29, 30 };
D://二维整数数组,初值mf5[0,0]=1,mf5[0,1]=2,mf5[1,0]=3,mf5[1,1]=4
int[,] mf5=new int[,]{{1,2},{3,4}};
E://6*6的二维整型数组
int[,] mf6=new mf[6,6];
四、取得数组元素个数:
int b;
b = sizeof (a)/sizeof (*a);
c#字符串及数组操作
2007-12-12 17:53字符串操作(取当前时间)
string time=convert.tostring(DateTime.Today).split( new char []{' '}); textbox1.text=time[0]; 以空格作为分界点;
数组概述
C# 数组从零开始建立索引,即数组索引从零开始。C# 中数组的工作方式与在大多数其他流行语言中的工作方式类似。但还有一些差异应引起注意。
声明数组时,方括号 ([]) 必须跟在类型后面,而不是标识符后面。在 C# 中,将方括号放在标识符后是不合法的语法。
int[] table; // not int table[];
另一细节是,数组的大小不是其类型的一部分,而在 C 语言中它却是数组类型的一部分。这使您可以声明一个数组并向它分配 int 对象的任意数组,而不管数组长度如何。
int[] numbers; // declare numbers as an int array of any size
numbers = new int[10]; // numbers is a 10-element array
numbers = new int[20]; // now it's a 20-element array
声明数组
C# 支持一维数组、多维数组(矩形数组)和数组的数组(交错的数组)。下面的示例展示如何声明不同类型的数组:
一维数组:int[] numbers;
多维数组:string[,] names;
数组的数组(交错的):byte[][] scores;
声明数组(如上所示)并不实际创建它们。在 C# 中,数组是对象(本教程稍后讨论),必须进行实例化。下面的示例展示如何创建数组:
一维数组:int[] numbers = new int[5];
多维数组:string[,] names = new string[5,4];
数组的数组(交错的):byte[][] scores = new byte[5][]; for (int x = 0; x < scores.Length; x++) {scores[x] = new byt[4];
}
还可以有更大的数组。例如,可以有三维的矩形数组:int[,,] buttons = new int[4,5,3];
甚至可以将矩形数组和交错数组混合使用。例如,下面的代码声明了类型为 int 的二维数组的三维数组的一维数组int[][,,][,] numbers;
初始化数组
C# 通过将初始值括在大括号 ({}) 内为在声明时初始化数组提供了简单而直接了当的方法。下面的示例展示初始化不同类型的数组的各种方法。
注意 如果在声明时没有初始化数组,则数组成员将自动初始化为该数组类型的默认初始值。另外,如果将数组声明为某类型的字段,则当实例化该类型时它将被设置为默认值 null。
一维数组
int[] numbers = new int[5] {1, 2, 3, 4, 5};
string[] names = new string[3] {"Matt", "Joanne", "Robert"};
可省略数组的大小,如下所示:
int[] numbers = new int[] {1, 2, 3, 4, 5};
string[] names = new string[] {"Matt", "Joanne", "Robert"};
如果提供了初始值设定项,则还可以省略 new 运算符,如下所示:
int[] numbers = {1, 2, 3, 4, 5};
string[] names = {"Matt", "Joanne", "Robert"};
多维数组
int[,] numbers = new int[3, 2] { {1, 2}, {3, 4}, {5, 6} };
string[,] siblings = new string[2, 2] { {"Mike","Amy"}, {"Mary","Albert"} };
可省略数组的大小,如下所示:
int[,] numbers = new int[,] { {1, 2}, {3, 4}, {5, 6} };
string[,] siblings = new string[,] { {"Mike","Amy"}, {"Mary","Albert"} };
如果提供了初始值设定项,则还可以省略 new 运算符,如下所示:
int[,] numbers = { {1, 2}, {3, 4}, {5, 6} };
string[,] siblings = { {"Mike", "Amy"}, {"Mary", "Albert"} };
交错的数组(数组的数组)
可以像下例所示那样初始化交错的数组:
int[][] numbers = new int[2][] { new int[] {2,3,4}, new int[] {5,6,7,8,9} };
可省略第一个数组的大小,如下所示:
int[][] numbers = new int[][] { new int[] {2,3,4}, new int[] {5,6,7,8,9} };-或-
int[][] numbers = { new int[] {2,3,4}, new int[] {5,6,7,8,9} };
请注意,对于交错数组的元素没有初始化语法。
访问数组成员
访问数组成员可以直接进行,类似于在 C/C++ 中访问数组成员。例如,下面的代码创建一个名为 numbers 的数组,然后向该数组的第五个元素赋以 5:
int[] numbers = {10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0};
numbers[4] = 5;
下面的代码声明一个多维数组,并向位于 [1, 1] 的成员赋以 5:
int[,] numbers = { {1, 2}, {3, 4}, {5, 6}, {7, 8}, {9, 10} };
numbers[1, 1] = 5;
下面声明一个一维交错数组,它包含两个元素。第一个元素是两个整数的数组,第二个元素是三个整数的数组:
int[][] numbers = new int[][] { new int[] {1, 2}, new int[] {3, 4, 5}};
下面的语句向第一个数组的第一个元素赋以 58,向第二个数组的第二个元素赋以 667:
numbers[0][0] = 58;
numbers[1][1] = 667;
数组是对象
在 C# 中,数组实际上是对象。System.Array 是所有数组类型的抽象基类型。可以使用 System.Array 具有的属性以及其他类成员。这种用法的一个示例是使用“长度”(Length) 属性获取数组的长度。下面的代码将 numbers 数组的长度(为 5)赋给名为 LengthOfNumbers 的变量:
int[] numbers = {1, 2, 3, 4, 5};
int LengthOfNumbers = numbers.Length;
System.Array 类提供许多有用的其他方法/属性,如用于排序、搜索和复制数组的方法。
对数组使用 foreach
C# 还提供 foreach 语句。该语句提供一种简单、明了的方法来循环访问数组的元素。例如,下面的代码创建一个名为 numbers 的数组,并用 foreach 语句循环访问该数组:
int[] numbers = {4, 5, 6, 1, 2, 3, -2, -1, 0};
foreach (int i in numbers){System.Console.WriteLine(i);}
由于有了多维数组,可以使用相同方法来循环访问元素,例如:
int[,] numbers = new int[3, 2] {{9, 99}, {3, 33}, {5, 55}};
foreach(int i in numbers){Console.Write("{0} ", i);}
该示例的输出为: 9 99 3 33 5 55
不过,由于有了多维数组,使用嵌套 for 循环将使您可以更好地控制数组元素
</list
</list
对象数组的概念
(1)类具有相同或相似性质的对象的抽象就是类。因此,对象的抽象是类,类的具体化就是对象,也可以说类的实例是对象。类具有属性,它是对象的状态的抽象,用数据结构来描述类的属性。类具有操作,它是对象的行为的抽象,用操作名和实现该操作的方法来描述。(2)类的结构在客观世界中有若干类,这些类之间有一定的结构关系。通常有两种主要的结构关系,即一般--具体结构关系,整体--部分结构关系。①一般——具体结构称为分类结构,也可以说是“或”关系,或者是“is a”关系。②整体——部分结构称为组装结构,它们之间的关系是一种“与”关系,或者是“has a”关系。(3)对象对象是人们要进行研究的任何事物,从最简单的整数到复杂的飞机等均可看作对象,它不仅能表示具体的事物,还能表示抽象的规则、计划或事件。(4)对象的状态和行为 对象具有状态,一个对象用数据值来描述它的状态。对象还有操作,用于改变对象的状态,对象及其操作就是对象的行为。对象实现了数据和操作的结合,使数据和操作封装于对象的统一体中(5)消息和方法 对象之间进行通信的结构叫做消息。在对象的操作中,当一个消息发送给某个对象时,消息包含接收对象去执行某种操作的信息。发送一条消息至少要包括说明接受消息的对象名、发送给该对象的消息名(即对象名、方法名)。一般还要对参数加以说明,参数可以是认识该消息的对象所知道的变量名,或者是所有对象都知道的全局变量名。
对象转换为数组的方法
第一步,双击打开HBuilder编辑工具,新建静态页面Array.html,如下图所示:
请点击输入图片描述
第二步,在title标题下方,添加script标签;并在script标签内声明一个变量arr,调用Array.from,参数为youhai,如下图所示:
请点击输入图片描述
第三步,保存代码并在浏览器中预览,打开浏览器控制台,查看打印结果,如下图所示:
请点击输入图片描述
第四步,修改JS代码,定义一个对象变量obj,然后使用Array.from方法将其转换成数组,如下图所示:
请点击输入图片描述
第五步,再次预览界面,查看浏览器中打印的结果,可以看到数组长度为0,如下图所示:
请点击输入图片描述
第六步,返回到HBuilder工具,在对象obj中添加length属性,属性值为4;查看浏览器控制台,发现数组有四个未定义元素,如下图所示:
请点击输入图片描述
请点击输入图片描述
第七步,将对象obj的属性名称改为数组的索引值,从0开始,然后再次保存查看打印结果,如下图所示:
请点击输入图片描述
数组对象操作方法
数组对象的操作方法:
1、添加:push()方法在数组末尾增加一个或多个元素,返回新长度;push()操作会改变原来的数组 eg: var a = [];a.push(“zero”);//a = [“zero” ,”one”,”two”]
2、删除:pop()用于删除并返回数组的最后一个元素。pop()操作会改变原来的数组。eg: var arr = [1,2,3]; document.wite(arr.pop())// 输出显示 3? 实际arr=[1,2];
3、join()方法将数组中所有元素都转化为字符串并且连接在一起,join()操作不会改变原来的数组? eg:var arr = [1,2,3]; document.write(a.join("\"));//1\2\3
4、逆序:reverse()将数组中元素的顺序颠倒,返回逆序的数组。reverse()操作会改变原来的数组 eg:var a = [1,2,3];a.reverse(); //a=[3,2,1];
5、排序:sort()不带参数调用sort(),将按字母表进行排序? 想让其按我们的方式排序,则需要传入比较函数,
6、合并:concat() concat() 方法合并两个数组,并返回合并后的新数组。eg:var a=[1,2,3],b=[4,5,6];document.write(a.concat(b))
//1,2,3,4,5,6
7、片段显示:slice()slice()方法返回指定数组的一个片段或子数组
var a = [1,2,3,4,5]; a.slice(0,3);? ? ? ? ==>[1,2,3]
a.slice(3);? ? ? ? ? ? ==>[4,5]
a.slice(1,-1);? ? ? ? ==>[2,3,4]? 参数-1指定为最后一个元素
a.slice(-3,-2);? ? ? ==>[3]
8、插入、删除或替换:splice() 方法用于插入、删除或替换数组的元素。并返回删除的部分数组
var a = [1,2,3,4,5,6,7,8]
a.splice(4);? ==>返回[5,6,7,8]? 数组a变为[1,2,3,4]
a.splice(1,2);? ==>返回[2,3]? a是[1,4,5,6,7,8]
a.splice(2,0,'a','b');? 返回[], a是[1,2,'a','b',3,4,5,6,7,8]向数组中添加元素:
a.splice(2,2,33,3); a是[1,2,33,3,5,6,7,8]
9、unshift()和shift()是在数组的头部而非尾部进行元素的插入和删除操作。unshift()最后返回数组新的长度shift()删除数组的第一个元素并将其返回。
var a=[1,2,3];
a.unshift(9);//a=[9,1,2,3];
a.shift()//a=[2,3]
10、删除元素:delete
var arr2 = [1,2,3,4,5];
delete arr2[3];//删除arr2数组的第四个位置的元素;但是此位置依然保留,只是内容被删除,在alert(arr2[3]);返回undefined
11.? 遍历数组? ? 1、 for(){}? 2、for in
var a = [];//声明一个数组
a[0] = "泰国";//给数组赋值,第一个值是泰国
a[1] = "韩国";//给数组赋值,第一个值是韩国//利用for循环遍历
for(var i =0;i<2;i++){
alert("我去过"+a[i]);
}//利用for in 循环遍历
for(country in a){
alert("我去过"+a[country]);
}
什么是对象数组?如何为对象数组赋值?
对象数组就是数组里的每个对象都是类的对象,赋值时先定义对象,然后将对象直接赋给数组就行了。
比如:
#include
using namespace std;
class A
{
int x;
int y;
}
void main()
{
A a1,a2;
A array[10];
array[0]=a1;
array[1]=a2;
}
建立一个对象数组,内放5个学生的数据,用指针指向数组首元素,输出第1,3,5个学生的数据
#include
using namespace std;
class Student
{
public:
Student(int n=0, float s=0): num(n), score(s){}
void input();
void display();
private:
int num;
float score;
};
void Student::input()
{
cin>>num>>score;
}
void Student::display()
{
cout<
<num<<' '<<score<<endl;
}
int main()
{
Student stu[5], *p;
int i;
for (i=0; i<5; i++){
cout<<"Pleas enter No."<
<i+1<<" student info: ";
stu[i].input();
}
for (p=stu; p
<stu+5; p+="2){
p->display();
cout<
<endl;
}
system("pause");
return 0;
}
扩展资料:cout语句的一般格式为:
cout<
<表达式1<<表达式2<<……<<表达式n;
在定义流对象时,系统会在内存中开辟一段缓冲区,用来暂存输入输出流的数据。在执行cout语句时,先把插入的数据顺序存放在输出缓冲区中,
直到输出缓冲区满或遇到cout语句中的endl(或'\n',ends,flush)为止,此时将缓冲区中已有的数据一起输出,并清空缓冲区。输出流中的数据在系统默认的设备(一般为显示器)输出。
一个cout语句可以分写成若干行。如:
cout<<"This is a simple C++ program."<
<endl;
可以写成
cout<<"This is " //注意行末尾无分号
<<"a C++ "
<<"program."
<
<endl; 语句最后有分号
也可写成多个cout语句,即
cout<<"This is "; //语句末尾有分号
cout <<"a C++ ";
cout <<"program.";
cout<
<endl;
以上3种情况的输出均为:
This is a simple C++ program.
</endl;
</endl;
</表达式1<<表达式2<<……<<表达式n;
</endl;
</i+1<
</num<