• 关于C#中虚方法重载的说明


    < DOCTYPE html PUBLIC -WCDTD XHTML StrictEN httpwwwworgTRxhtmlDTDxhtml-strictdtd>
    首先请大家看看下面的例子,
    using System;

    abstract public class contact
    {
          public virtual string prinf()
          {
              return ("这是虚方法");
          }
    }

    public class class1:contact
    {
           public string prinf()
           {
                  return ("这是新的方法");//但这会出现编译警告,因为已经从contact那继承了一个同名方法
           }
    }
    想要通过编译,只需将prinf的声明改为
    public override string prinf()

    public new string prinf()
    但是这两种声明方式是有区别的,
    请看下面的例子:
    using System;

    abstract public class contact
    {
          public virtual string prinf()
          {
              return ("这是虚方法");
          }
    }

    public class class1:contact
    {
           public override string prinf()
           {
                  return ("这是新的方法");   
            }
    }
    public class class2:contact
    {
           public new string prinf()
           {
                  return ("这是另一个新的方法");   
            }
    }
    public class text
    {
            public static void Main()
            {
                  contact [] contacts=new contact [2];
                  contacts[0]=new class1;
                  contacts[1]=new class2;
                  foreach(contact ct in contacts)
                  {
                        Console.WriteLine(ct.printf);
                   }
             }
    }

    最后我们看到的结果是

    这是新的方法
    这是虚方法


    而没有看见“这是另一个新的方法”,这是因为class2没有重载虚方法,而是重新定义了一个方法!
    这就是两者的区别!!!
  • 相关阅读:
    解决“已禁用对分布式事务管理器(MSDTC)的网络访问”错误
    C# Freely convert between IList<T> and IEnumerable<T>
    Json MaxJsonLength Error
    [转]Introducing the IE8 Developer Tools JScript Profiler
    页面调试心得
    ASP.NET中Label控件特殊之处
    模板模式
    Android中通过typeface设置字体
    Android 新浪微博授权
    【转】android:网络图片转为bitmap 保存至SD卡中
  • 原文地址:https://www.cnblogs.com/netcorner/p/2912319.html
Copyright © 2020-2023  润新知