zoukankan      html  css  js  c++  java
  • 虚拟属性

         本文使用一个控制台工程来测试虚拟属性,下面是完整的控制台程序代码。

     1 using System;
     2 using System.Collections.Generic;
     3 using System.Linq;
     4 using System.Text;
     5 
     6 namespace VisualProperty
     7 {
     8     class Program
     9     {
    10         static void Main(string[] args)
    11         {
    12             MyBaseClass mbc = new MyBaseClass();
    13             mbc.Name = "";      //父类输出""
    14             MyDerivedClass mdc = new MyDerivedClass();
    15             mdc.Name = "";      //子类输出unknown
    16             Console.WriteLine(string.Format("基类输出Name属性:{0}", mbc.Name));
    17             Console.WriteLine(string.Format("子类输出Name属性:{0}", mdc.Name));
    18         }
    19     }
    20 
    21     class MyBaseClass
    22     {
    23         //虚拟自动属性。子类可以使用overrides重写该属性,
    24         //子类可以实现get和set访问器,以实现自定义的操作。
    25         public virtual string Name { get; set; }
    26 
    27         // 带支持字段的虚拟属性
    28         private int num;
    29         public virtual int Number
    30         {
    31             get { return num; }
    32             set { num = value; }
    33         }
    34     }
    35 
    36 
    37     class MyDerivedClass : MyBaseClass
    38     {
    39         //Name属性的支持字段
    40         private string name;
    41 
    42        //在子类中重写Name字段,实现特殊的get,set访问器
    43         public override string Name
    44         {
    45             get
    46             {
    47                 return name;
    48             }
    49             set
    50             {
    51                 if (!string.IsNullOrWhiteSpace(value))
    52                 {
    53                     name = value;
    54                 }
    55                 else
    56                 {
    57                     name = "Unknown";
    58                 }
    59             }
    60         }
    61 
    62     }
    63 
    64 
    65 }

    运行结果截图

    除了声明和调用语法不同外,虚拟属性的行为与抽象方法一样。

    • 在静态属性上使用 virtual 修饰符是错误的。

    • 通过包括使用 override 修饰符的属性声明,可在派生类中重写虚拟继承属性。

    MSDN参考


    作者:kissazi2
    出处:http://www.cnblogs.com/kissazi2/
    本文版权归作者所有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。

  • 相关阅读:
    UltraSoft
    UltraSoft
    UltraSoft
    UltraSoft
    UltraSoft
    [技术博客] 使用邮箱验证并激活账户
    OO第一单元作业总结
    OO第一单元总结
    buaaoo_second_assignment
    buaaoo_first_improvement
  • 原文地址:https://www.cnblogs.com/kissazi2/p/2843363.html
Copyright © 2011-2022 走看看