11月2日小结

 
星期四 2006年11月2日
     C#语言中类的相关知识(二)
1.静态
 静态是属于类的而不属于类的实例,不需要对类进行实例化即可访问静态的东西。
 静态对象的访问
  
 注意:
  Java中:静态方法不能访问非静态成员
    静态方法中不能使用This指针
    静态方法不能被覆盖成非静态方法
  C#:  与Java相同,属性也可定义成静态的,但字段都得写成静态的
2.单态模式(只能有一个实例)
 1)把构造方法做成私有的
 2)通过静态方法得到实例
 3)做静态计数器
 4)定义静态的本类引用
  ex:
   class student
   {
       private static int cnt = 0;
       private static student s;
       private student()
       {
       }
       public static student getInstnce()
       {
           if(cnt==0)
     {
          s=new student();
          cnt++;
      }
      return s;
       }
   }
3.密封类
 如果不想让别的类生成该类的子类可用关键字sealed修饰该类.即用sealed修饰的类将不会产生子类,它是一个终结的类,
   C#中称其为密封类(好比Java中的final关键字)
 子C#语言中sealed不能修饰方法和字段,而在Java中final即可修饰类、方法又可修饰属性。
4.接口
 Java中的接口可以包括方法和属性,且属性必须为常量
 C#中的接口只可包括方法,而不存在常量和变量(C#中常量是属于静态的)
5.委托
 1)定义委托
  访问控制符   delegate   返回值类型   委托名(参数列表)
 2)委托的实现代码
  这个方法的原型要与声明的原型相同(返回值参数)
 3)声明一个委托变量
  public   委托名   委托变量
 4)让委托的变量指向委托的实现
  委托实例.委托变量  =  new  委托类型(实现方法的方法名)
 5)引发委托
  变量的参数类型应当和声明的一样
 6)调用
  无参数委托实例:
  namespace ConsoleApplication1
  {
       public class child
       {
           //定义委托
           public delegate void myprint();
           //声明一个委托变量
           public myprint aaaa;
           //引发委托
           public void print()
           {
               aaaa();
           }
       }
       class people
       {
           //委托的实现代码
           public void print()
           {
               Console.WriteLine("我是小孩,委托别人养宠物");
           }
           public static void Main()
           {
               people p = new people();
               child c = new child();
               //让委托变量指向委托的实现
               c.aaaa = new ConsoleApplication1.child.myprint(p.print);
               c.print();
           }
       }
  }

    
  带有参数的委托实例:
  namespace ConsoleApplication1
  {
   public class Account
   {
           //定义委托
        public delegate void mycheck(bool flag);
    //声明了一个委托变量
           public mycheck check;
     //引发委托
    public void  login(string username,string pwd)
    {
     if(check==null)
     {
      return;
     }
     if(username.Equals("zhangsan") && pwd.Equals("001"))
     {
      check(true);
      return;
     }
     check(false);
    }
   }
   class User1
   {
           //委托的实现代码
    public static void on_login(bool f)
    {
     if(f==true)
     {
      Console.WriteLine("OKKKKKKKKKKKKKKK");
      return;
     }
     Console.WriteLine("ERRRRRRRRRRRRR");
    }
    public static void Main()
    {
     Account account =new Account();
     //User1 u=new User1();
                //让委托变量指向委托的实现
     account.check+=new ConsoleApplication1.Account.mycheck(User1.on_login);
     account.check+= new ConsoleApplication1.Account.mycheck(User1.on_login);
     //调用
                account.login("zhangsan","001");  
    }
   }
  }

   

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值