C#索引器的一些问题 5

usingSystem;usingSystem.Collections.Generic;usingSystem.Linq;usingSystem.Text;namespa... using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace 索引器
{
class Program
{
static void Main(string[] args)
{
Ablum MyAblum = new Ablum(2);
Photo first = new Photo("小李");
Photo second = new Photo("小张");
MyAblum[0] = first;
MyAblum[1] = second;
Photo textphotos = MyAblum[0];
Console.WriteLine(textphotos.Title);
Photo textphots = MyAblum["小张"];
Console.WriteLine(textphots.Title);

}
}
class Photo
{
private string photoTitle;
public Photo()
{
photoTitle = "李国耀";
}
public Photo(string title)
{
photoTitle = title;
}
public string Title
{
get { return photoTitle; }

}
}
class Ablum
{
Photo[] photos; 这个是定义数组吗?怎么还可以用类名定义吗?
public Ablum()
{
photos = new Photo[3];
}
public Ablum(int capacity)
{
photos = new Photo[capacity];
}
public Photo this[int index] 定义索引器怎么也可以用类名.
{
get
{
if (index < 0 || index >= photos.Length)
{
Console.WriteLine("索引有问题");
return null;
}
return photos[index];
}
set
{
if (index < 0 || index >= photos.Length)
{
Console.WriteLine("索引有问题");
return;
}
photos[index]=value;
}
}
public Photo this[string title]
{
get
{
foreach (Photo p in photos)
{
if (p.Title == title)
{
return p;
}
Console.WriteLine("找不到");
}
return null;
}
}
}

}
我应该怎样理解用类定定义的数组和索引器.
在main中怎么又突然有了MyAblum[0] = first;
MyAblum[1] = second;我没有定义带有 MyAblum的数组啊.
哪位高手帮忙解释一下.最好能把索引器的使用和调用都讲一下,谢谢了.
展开
 我来答
百度网友02cd4ce
2010-06-22 · TA获得超过516个赞
知道小有建树答主
回答量:709
采纳率:0%
帮助的人:721万
展开全部
1.一般情况你建立一个类calss1,那么你在引用该类时,可以使用class1[] ,这样你这个类数组中就可以存放多个class1类对象了,就好比你定义int类型,也可以定义int[] 数组类型,只不过int类型是C#类库中自定义好的,所以你定义int[]
数组类型,系统就知道你是要在这个数组中存放int类型的数据,class其实也是同理的。
2.类的索引器功能很实用,具体的 “类[成员]”其实访问的也就是你这个类中的成员,和“类.成员”差不多,不过很多时候,我不想让引用这个类的人知道我类中的成员定义的名称是什么,但我需要返回这个值给对方,那么我就在类中定义一个索引器,让对方直接使用类实例+[]的方式获取值。它还有一些其他好处,你可以在网上搜索一下这方面的介绍。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
风雨来袭的一刻
2010-06-22 · 超过11用户采纳过TA的回答
知道答主
回答量:25
采纳率:0%
帮助的人:0
展开全部
不知道你学过C++没,C#索引器和C++的运算符重载很像,我们重载[]使得访问属性像访问数组一样。C#中当编译时,自动把它们解析成普通的get,set属性访问,做法是:自动添加get_Item(),set_Item()这两个方法,你可以查看.Net 参考文档,有详细解释。
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
ajax83316
2010-06-22 · TA获得超过466个赞
知道小有建树答主
回答量:485
采纳率:0%
帮助的人:301万
展开全部
Photo[] photos; 一个photo型的数组,数组里面都是photo类型的
MyAblum[0]索引返回 photo
this[int index] 就是给Ablum定义的索引器
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式