zoukankan      html  css  js  c++  java
  • 复习 控件开发读书笔记

    才隔两天,看“控件开发读书笔记”的代码时,又是不知道自己当初讲什么。复习一下后,自己又产生几个简单的问题。

    一、方法除了用来重写外,还可以用来调用
    以前,不是面对对象编程时,函数或子程序都是用来调用的,没有继承或重写的概念。现在练习了面对对象编程,结果只想到方法是用来继承、重写的,没想到它还可以用来调用。所以,继承就会遇到一个问题,如果子项不知道父项的结构,随意调用,一定会导致死循环。
    using System;

    class m
    {
      public static void Main()
      {
        b b1=new b();
        b1.bb();
      }
    }

    class a
    {
      public virtual void aa()
      {
        Console.WriteLine("a.aa()");
        bb();
      }

      public virtual void bb()
      {
        Console.WriteLine("a.bb()");
      }
    }

    class b : a
    {
      public override void bb()
      {
        aa();
      }
    }

    虽然传统编程中这样的事情也会发生,但由于代码都在一个程序中,因此比较容易发现,也比较容易避免。但在面向对象编程中,由于父类被封装了,因此子类继承父类时,写的代码好像并没有问题,但事实上却是出错了。
    如何看到父类的代码?这里有一个reflector工具,被称为.Net程序员必备的工具之首。
    我把以上类a提出来改成DLL的形式,用如下命令编译:
    csc /t:library ta.cs
    csc t1.cs /r:ta.dll
    然后再用reflector工具打开ta.dll,系统清楚地把我的代码体现出来。不错!不错!

    二、WebControl的RenderBeginTag方法与writer中的RenderBeginTag方法不是同一个东西。
    我们自己写的控件可以重写RenderBeginTag方法,生成多重开始标签,但一般情况下,我们用TagKey来更改控件的Tag。
    而writer也有一个RenderBeginTag方法,它是输出类似<DIV>这个东西的,与WebControl的RenderBeginTag无关。

     

  • 相关阅读:
    1094. Car Pooling
    121. Best Time to Buy and Sell Stock
    58. Length of Last Word
    510. Inorder Successor in BST II
    198. House Robber
    57. Insert Interval
    15. 3Sum java solutions
    79. Word Search java solutions
    80. Remove Duplicates from Sorted Array II java solutions
    34. Search for a Range java solutions
  • 原文地址:https://www.cnblogs.com/yzx99/p/1371853.html
Copyright © 2011-2022 走看看