c# 类对象的数组,定义以及如何在其他类或方法中调用数组

namespaceshiyan3_2{publicpartialclassForm4:Form{publicForm4(){InitializeComponent();}... namespace shiyan3_2
{
public partial class Form4 : Form
{
public Form4()
{
InitializeComponent();
}

private void Form4_Load(object sender, EventArgs e)
{
Book[] book = new Book[10];
book[0] = new Book("chinese", "me", 21, 2,30 );
book[1] = new Book("english", "you", 28, 3, 40);
}

private void button2_Click(object sender, EventArgs e)
{
Form4 f = new Form4();
}
public class Book
{
string title;
string author;
int price;
int store;
int sellprice;

public Book()
{
}

public Book(string ti,string au,int pr,int st,int se)
{
title = ti;
author = au;
price = pr;
store = st;
sellprice = se;
}
}
}

如何在button_click中调用book【0】呢?看到一些人说不能调用的,如果不能调用那数组不就是废了
请原谅我是个菜鸟,求帮助
展开
 我来答
帖靖易oU
2015-11-05 · 超过19用户采纳过TA的回答
知道答主
回答量:50
采纳率:100%
帮助的人:16.9万
展开全部

定义方法:

object[] myObjArray = new object[3]; //3的位置是数组长度

如果需要不定长数组,推荐使用List来解决,当需要数组下标特性的时候,只要用ToArray转一下就行了。

List<object> myObjList = new List<object>();
//myObjList.add(new object("my_obj");
object[] myObjArray = myObjList.ToArray();

至于调用,和普通参数传参方法相同,但要注意需要的形式,是引用传入,还是一般传入

引用传入可以使用ref关键字标定,使用时会直接使用对象引用,更改值表示,原值更改。一般传入,仅表示使用其值,返回时需要用返回值,或者使用out关键字标定的传入参数。

总得来说,可以把对象数组当作一般参数来对待,但是使用时注意他真实类型就行了。


针对问题,这个是一个参数域的问题,需要把book数组定义在外部,使book的作用域扩大,现在的book的作用域只是load函数。我大致写一下

book[] = new 

load {

  book[] //赋值等操作

}

click {

  //调用book

}

linux001
2012-03-27 · TA获得超过1401个赞
知道大有可为答主
回答量:1665
采纳率:100%
帮助的人:1355万
展开全部
把你这句 Book[] book = new Book[10]; 声明成全局的不就行了嘛。。在LOAD中赋值。。其他地方就可以用了。
更多追问追答
追问
即是放到namespace shiyan3_2下面?
追答
是放到  class Form4 : Form这个类的里面
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
hukgot
2012-03-28 · 超过19用户采纳过TA的回答
知道答主
回答量:62
采纳率:100%
帮助的人:43万
展开全部
namespace shiyan3_2
{
public partial class Form4 : Form
{
//如果你想在Form4以外的地方调用那就声明为public 变量或public的属性。
Book[] book = new Book[10];
public Form4()
{
InitializeComponent();
}

private void Form4_Load(object sender, EventArgs e)
{
book[0] = new Book("chinese", "me", 21, 2,30 );
book[1] = new Book("english", "you", 28, 3, 40);
}
追问
声明public之后 我在Form4_Load方法里面的book[0]和book[1]都可以再Form4之外调用?
变量跟属性本质上有什么不同?
追答
封装性的问题。
公共变量,读写权限不能更改。
公共属性则可设置读写权限,并可根据情况在Get和Set中添加其他处理。
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
zyquan8851
2012-04-01
知道答主
回答量:10
采纳率:0%
帮助的人:6.7万
展开全部
namespace shiyan3_2
{
public partial class Form4 : Form
{
Book[] book;
public Form4()
{
InitializeComponent();
}

private void Form4_Load(object sender, EventArgs e)
{
book = new Book[10];
book[0] = new Book("chinese", "me", 21, 2,30 );
book[1] = new Book("english", "you", 28, 3, 40);
}

private void button2_Click(object sender, EventArgs e)
{
Form4 f = new Form4();
var val = book[0];
}
public class Book
{
string title;
string author;
int price;
int store;
int sellprice;

public Book()
{
}

public Book(string ti,string au,int pr,int st,int se)
{
title = ti;
author = au;
price = pr;
store = st;
sellprice = se;
}
}
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式