C#拾遗系列(2):属性

简介:

1. 这里主要演示属性的继承和覆盖

2. 把属性理解为方法,实际上编译器就是把属性生成方法

示例:

using System;

using System.Collections.Generic;

using System.Linq;

using System.Text;

 

namespace NetTest

{

 

   public class TestPerpoerty

    {

 

        class DerivedClass : BaseClass

       {

           private string name = "Name-DerivedClass";

           private string id = "ID-DerivedClass";

 

           new public string Name

           {

               get

               {

                   return name;

               }

 

               // Using "protected" would make the set accessor not accessible.

               set

               {

                   name = value;

               }

           }

 

           // Using private on the following property hides it in the Main Class.

           // Any assignment to the property will use Id in BaseClass.

           new private string Id

           {

               get

               {

                   return id;

               }

               set

               {

                   id = value;

               }

           }

       }

 

 

        class BaseClass

        {

            private string name = "Name-BaseClass";

            private string id = "ID-BaseClass";

 

            public string Name

            {

                get { return name; }

                set { }

            }

 

            public string Id

            {

                get { return id; }

                set { }

            }

        }

 

        public  void Test()

        {

            BaseClass b1 = new BaseClass();

            DerivedClass d1 = new DerivedClass();

 

            b1.Name = "Mary";

            d1.Name = "John";

 

            b1.Id = "Mary123";

            d1.Id = "John123";  // The BaseClass.Id property is called.

 

            System.Console.WriteLine("Base: {0}, {1}", b1.Name, b1.Id);

            System.Console.WriteLine("Derived: {0}, {1}", d1.Name, d1.Id);

 

            /*

            输出:

            Name and ID in the base class: Name-BaseClass, ID-BaseClass

            Name and ID in the derived class: John, ID-BaseClass

                        *

            --------------------------------

            注意,如果将 new private string Id 替换为 new public string Id,则得到如下输出:

            Name and ID in the base class: Name-BaseClass, ID-BaseClass

 

            Name and ID in the derived class: John, John123

            */

        }

    }

 

}

本文转自敏捷的水博客园博客,原文链接http://www.cnblogs.com/cnblogsfans/archive/2008/06/11/1217388.html如需转载请自行联系原作者


王德水

相关文章
C#拾遗补漏之goto跳转语句
在我们日常工作中常用的C#跳转语句有break、continue、return,但是还有一个C#跳转语句很多同学可能都比较的陌生就是goto,今天大姚带大家一起来认识一下goto语句及其它的优缺点。
183 1
|
存储 安全 编译器
C# 11.0中的泛型属性:类型安全的新篇章
【1月更文挑战第23天】C# 11.0引入了泛型属性的概念,这一新特性为开发者提供了更高级别的类型安全性和灵活性。本文将详细探讨C# 11.0中泛型属性的工作原理、使用场景以及它们对现有编程模式的改进。通过深入了解泛型属性,开发者将能够编写更加健壮、可维护的代码,并充分利用C#语言的最新发展。
|
存储 编译器 C#
|
12月前
|
存储 安全 编译器
学懂C#编程:属性(Property)的概念定义及使用详解
通过深入理解和使用C#的属性,可以编写更清晰、简洁和高效的代码,为开发高质量的应用程序奠定基础。
875 12
|
12月前
|
开发框架 人工智能 .NET
C#/.NET/.NET Core拾遗补漏合集(24年12月更新)
C#/.NET/.NET Core拾遗补漏合集(24年12月更新)
184 6
|
安全 C# 索引
C#一分钟浅谈:属性与索引器的定义
本文深入浅出地介绍了C#编程中的属性和索引器。属性让字段更安全,通过访问器方法在读写时执行额外操作,如验证数据有效性;索引器则赋予类数组般的访问方式,支持基于索引的数据访问模式。文章通过示例代码展示了如何定义及使用这两种特性,并提供了常见问题及其解决方案,帮助读者写出更健壮、易维护的代码。希望读者能从中学习到如何有效利用属性和索引器增强C#类的功能性。
306 12
|
存储 安全 编译器
C#中的属性
C#中的属性
126 7
|
开发框架 .NET 编译器
程序与技术分享:C#基础知识梳理系列三:C#类成员:常量、字段、属性
程序与技术分享:C#基础知识梳理系列三:C#类成员:常量、字段、属性
174 2
|
XML 开发框架 人工智能
C#/.NET/.NET Core拾遗补漏合集(24年5月更新)
C#/.NET/.NET Core拾遗补漏合集(24年5月更新)
147 1
|
C#
C#中使用IntPtr.Size属性来判断当前系统是32位还是64位
这段代码首先检查 `IntPtr.Size`的值,如果是4,则输出"当前系统是32位";如果是8,则输出"当前系统是64位";如果都不是,就输出"未知系统位数"。
246 0