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