c#,用对象思考:值类型与引用类型(三) - Angel's Blog.

ing
 
 
软件开发,程序设计,前端设计
 
 
首页 > code > c#,用对象思考:值类型与引用类型(三)

c#,用对象思考:值类型与引用类型(三)

 

使用索引器:

定义一个索引器需要用this关键字进行修饰:

demo:

 

public int this[int index]    // Indexer declaration
{
    // get and set accessors
}

可以通过下标的方式进行索引,同时可以通过重载的方式自己定义一个索引器的访问方式(例如通过定义一个字符串类型进行索引):

demo1:

 

--------------------- separateLine start------------------
    //先定义一个 Person 类
    public class Person
    {
        public Person() { }
        public Person(int age, string name, string hobby, Genders gender)
        {
            this.Age = age;
            this.Hobby = hobby;
            this.Name = name;
            this.gender = gender;
        }
        public enum Genders
        {
            Male, Female
        }
        private Genders gender;

        public Genders Gender
        {
            get { return gender; }
            set { gender = value; }
        }

        private int age;

        public int Age
        {
            get { return age; }
            set
            {
                if (value > 18 && value < 60)
                {
                    age = value;
                }
                else
                {
                    age = 18;
                }
            }
        }
        private string name;

        public string Name
        {
            get { return name; }
            set { name = value; }
        }
        private string hobby;

        public string Hobby
        {
            get { return hobby; }
            set { hobby = value; }
        }
        public string Greet()
        {
            string message = string.Format("{0},{1},{2},{3}", 
this.Age, this.Gender, this.Hobby, this.Name);
            return message;
        }
    }
--------------------- separateLine over------------------

 

--------------------- separateLine start------------------
    //再定义一个PersonIndex 类,用来自定义索引器的重载。
    public class PersonIndex
    {
        public Person this[int index]
        {
            get { return studentes[index]; }
            set { studentes[index] = value; }
        }

        public Person this[string name]
        {

            get
            {
                int i = 0;
                bool found = false;
                for (i = 0; i < studentes.Length; i++)
                {
                    if (studentes[i].Name == name)
                    {
                        found = true;
                        break;
                    }
                }
                if (found)
                {
                    return studentes[i];
                }
                else
                {
                    return null;
                }
            }
        }

        private Person[] studentes;

        public Person[] Studentes
        {
            get { return studentes; }
            set { studentes = value; }
        }


    }
--------------------- separateLine over------------------

 

--------------------- separateLine start------------------
    //最后,再定义一个类MyPerson,创建实例后赋值
    class MyPerson
    {
        private PersonIndex personIndex;

        public PersonIndex PersonIndex
        {
            get { return personIndex; }
            set { personIndex = value; }
        }
        public MyPerson()
        {
            personIndex = new PersonIndex();
            personIndex.Studentes = new Person[2];
            personIndex[0] = new Person(18, "韩梅梅", "听音乐", Person.Genders.Female);
            personIndex[1] = new Person(11, "小明", "打沙包", Person.Genders.Male);

        }
    }
--------------------- separateLine over------------------

 

--------------------- separateLine start------------------
        //最后,使用索引器调用方法(通过下标访问或者自己定义的字符串)。
        /// <summary>
        /// 在button2 中 使用方法。
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void button2_Click(object sender, EventArgs e)
        {
            MyPerson myPerson = new MyPerson();
            MessageBox.Show(string.Format(myPerson.PersonIndex[1].Greet()));
            //在类中使用索引器访问方法。
            MessageBox.Show(string.Format(myPerson.PersonIndex["小明"].Greet()));
            //通过自定义的字符串类型。
        }
--------------------- separateLine over------------------

 

或者通过RSS 关注本站的更新 ^ O ^ 。” —  by  转载请注明:来自 Angel's Blog.
本文永久链接: http://www.0ee.com/2010/11/07/c-sharp-valuetype-object-para3.html
 
分类: code标签: ,
 
  • QQ书签
  • Del.icio.us
  • 百度收藏
  • Google
  • 饭否
  • FriendFeed
 

 
评论 (24) Trackbacks (0)
发表评论 Trackback
 
24 Comments Contributed by Visitors
  1.     lolo 2010年11月10日07:07 21#

    Angel,你看下这家伙的博客风格,虽然不是micolog的,但是博主有没有办法做一个类似的,感觉这个情侣博客很拉风啊 http://www.9170.org/

  2.     Angel 2010年11月10日12:23 22#

    @lolo
    额。。。这个我还真没研究过,,这个。。。貌似我搞不定。。

  3.     lolo 2010年11月12日14:03 23#

    来提交一个关于istudio 主题的BUG,就是文章的阅读数显示不正确,即使在后台更新了缓存,但是阅读数任然显示不正确,总是少于正常量!另外最近才发现istudio 主题带的search搜索无法使用?是需要自己添加还是?

  4.     Angel 2010年11月14日08:27 24#

    @lolo
    暂时不了解你所说的情况,至少我还没有遇到过,阅读次数是按照点击率来count 的,而且我不知道你的blog地址,这个暂时无法排除是否是count问题;
    关于我offer的主题中的search功能,我是直接post到google.com 搜索 site:你的url ,而非站内搜索,如果想站内搜索,自行添加search 页。

Leave Comments Here...

:) :-D :( :-o 8-O :-? 8) lol :-x :-P oops cry evil twisted wink ? idea :-| arrow mrgreen roll !

(required)

(required)

网址随您("http://"可以省略)

(Ctrl+Enter)

  • 本站不会泄露您的 Email 地址, 敬请放心.
  • 本站已开启缓存, 请不要重复提交评论.
  • 请注意: 带有 《广告(链)、不健康、或者 产品名字》 的评论一律视为spam.
  • 支持常用 HTML 标签调用, 插入 HTML 标签需注意: < == &lt;> == &gt;.
  • 仅当某人针对您的评论做出回应时, 您才会收到由本站发出的邮件通知.
  • 如您希望以相同方式通知某位网友, 请点击  按钮进行回复.
  • 允许在评论中使用如下代码: 
    <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> 
    <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong> 
    .
  • 鼠标悬浮到评论中的 @someone 区域即可自动显示 someone 的评论内容.
 
 
  • 正在加载...