`
wangdeshui
  • 浏览: 256880 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

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

            */

        }

    }

 

}

分享到:
评论

相关推荐

    CATIA二次开发:C#方式获取产品属性:一般属性及自定义属性

    本文将重点介绍如何通过C#语言进行CATIA的二次开发,特别是在获取产品属性方面。 在CATIA二次开发过程中,经常需要处理模型产品对象(Product)的属性信息。这些属性信息通常分为一般属性和自定义属性。 一般属性...

    C#射击类游戏:龙之战(源码)

    开发语言:C# 参考网络上流传的《勇者斗恶龙》游戏源码制作的一个射击类游戏,借用了《勇者斗恶龙》的游戏界面及部分源码。 整个游戏框架已基本完成,源码中采用了一些设计模式,有精美的游戏画面和详尽的代码注释,...

    北大青鸟S2 C#课件

    第六章节:属性、索引器、委托和事件 第七章节:WinForms基础知识 第八章节:WinForms控件 第九章节:调试、测试和异常处理 第十章节:多线程 第十一章节:数组和集合对象 第十二章节:C# 中的文件处理 注:参与评论返还...

    c#常规属性和自动实现属性的区别

    C# 中的常规属性和自动实现属性的区别 C# 中的属性是类中的一个成员,它可以是一种简单的数据存储方式,也可以是一个复杂的逻辑处理机制。在本文中,我们将重点讨论 C# 中的常规属性和自动实现属性的区别。 常规...

    C#的Demo项目:RabbitMQ封装和使用

    为了封装RabbitMQ.Client库,你可以创建一个RabbitMQService类,提供一系列的静态方法,如发送消息、接收消息、声明交换机、声明队列等。这样,其他业务代码可以直接调用这些方法,而无需关心底层的实现细节。 总结...

    编程学C#(1):VS2010 C# Access数据库管理程序

    编程学C#(1):VS2010 C# Access数据库管理程序,1. 基于VS2010 C# 的的Access数据库管理设计; 2. 数据集的创建; 3. .NET组件,dataGridview 控件的使用; 4. 数据库的插入、删除、查询操作设计。

    C#学习路线图:C#必须知道的300个问题 高清版[带完整书签]

    本书内容包括C#语言及其开发环境、掌握C#语言基础、流程控制语句、字符与字符串、数组和集合、C#面向对象程序设计、异常处理和程序调试、Windows窗体、Windows应用程序常用控件、Windows应用程序高级控件、c撑面向...

    C#编写的属性面板 源码

    2. 属性过滤:根据需要,可以实现只显示特定类型的属性,或者在特定条件下隐藏某些属性。 3. 自定义编辑器:通过注册自定义的`UITypeEditor`,可以为特定属性提供特殊的编辑界面,如日期选择器、颜色选取器等。 4....

    C#修改文件属性摘要信息

    在C#编程中,修改文件属性的摘要信息通常涉及到对文件元数据的操作。这包括诸如作者、标题、创建日期等信息。在这个过程中,我们需要利用Windows操作系统提供的COM接口,特别是ole32.dll库中的功能。ole32.dll是系统...

    C#+WinForm视频播放器(AxWindowsMediaPlayer) C# 源代码

    2.设置播放器的属性 3.批量添加文件 4.批量将列表中的文件加到播放器列表 5.支持歌词显示 6.本程序支持Windows Media Player中所有能播放的文件格式。 插件: 必须安装 RealoneED.exe 让windowsMediaPlayer支持RM...

    C#系列:Winform,C#基础语法

    【C#系列:Winform与C#基础语法详解】 C#是一种由微软开发的面向对象的编程语言,广泛应用于Windows应用程序开发,尤其是与.NET Framework框架相结合时,其强大的功能和简洁的语法使得开发者能高效地构建各种应用。...

    C# 自定义属性编辑器(UITypeEditor )

    在.NET框架中,C#提供了一种强大的机制,允许开发者扩展IDE(如Visual Studio)的属性编辑器功能,这就是UITypeEditor。通过自定义UITypeEditor,我们可以为控件、类或其他类型的属性创建定制的编辑界面,使得在设计...

    Modern C#系列课程(4):C# 中的类的设计

    在“Modern C#系列课程(4):C# 中的类的设计”中,我们将深入探讨如何有效地设计和使用C#中的类。本课程涵盖了以下几个关键知识点: 1. 类的定义与结构: - 类是对象的模板,它定义了对象的状态(属性)和行为...

    C#读取XML 的节点,以及属性

    XML文档由一系列元素组成,每个元素可以有零个或多个子元素,以及属性。元素通过开始标签(如 `<element>`)和结束标签(如 `</element>`)定义。属性是以名称-值对的形式出现在开始标签内,如 `...

    一个关于C# PropertyGrid增加自定义属性的范例。

    在C#编程中,`PropertyGrid`控件是一个强大的工具,用于显示和编辑对象的属性。它通常用于创建用户友好的界面,使开发者能够轻松地查看和修改对象的属性值。这个范例将向我们展示如何扩展`PropertyGrid`的功能,以...

    C# 自定义控件的属性和添加事件

    在C#中,可以通过使用`System.ComponentModel`命名空间中的特性来定义属性,如`DefaultValue`(指定默认值)和`Category`(分组属性)。以下是一个添加自定义属性的例子: ```csharp [DefaultValue("默认文本")] ...

    C# 获取数码相机照片各种属性

    在C#编程中,获取数码相机照片的各种属性是一项常见的任务,尤其在图像处理或媒体管理应用中。这些属性包括但不限于照片的元数据,如拍摄日期、时间、地理位置、相机型号、光圈、快门速度、ISO感光度、焦距等。在本...

    用c#实现图像处理:获取一幅图片的像素值及RGB分量

    在C#中实现图像处理是一项常见的任务,尤其是在游戏开发、图像分析、图形用户界面设计等领域。本教程将深入探讨如何获取一幅图片的像素值及其RGB(红绿蓝)分量。首先,我们需要了解一些基本概念。 图像本质上是由...

Global site tag (gtag.js) - Google Analytics