C#的一些定义理解

1、接口:所谓接口,可以理解成一种协议和标准。它提供给继承他的所有的类一个标准(比如说:属性、方法返回值、参数等),这样可以简化代码,程序可扩张性提高。
用法:一个方法如果需要引用到某些类做参数,而这些类的返回结果都一样,只是实现方法不同,传统的用法是用方法重载(参数不同,也就是各个类作为不同的参数引进),但是如果这些类都继承实现了某一个接口的话,只要把引用这些类的参数换成这个接口就行,要用到具体哪个类再用 “接口=new 类” 实例化就行了
2、类里面的属性和字段的区别:类里面的字段可以理解成类里面的局部变量,也就是类里面的方法需要用到的传值等操作的变量(外部直接操作安全性降低),属性可以理解成为用来描述类的一些特征的特殊“字段(相当于值)”,它的出现,可以通过外部赋值动态改变类里面字段的值,也就是局部变量,这样类相当于外界来说就可以成为动态的;
属性是逻辑字段,有更强的控制性;属性是字段的扩展,源于字段;属性不直接对应于存储位置,于属性只是将字段包装起来,所以属性并不占用实际的内存,真正占内存位置及空间的是字段。简单地说:属性是被外部使用的,字段是被内部使用的
3、声明于定义的区别:声明不为变量分配空间,而定义为变量分配空间,因此同一个变量的声明可以出现多次,而只能定义一次。 (在C中函数的声明是可以重复的,但是变量却不可以。对于变量的声明都会分配内存空间,只是这部分内存空间里存放的是随机值,直到被定义之后将赋予相应的值。);声明变量一般是全局函数里面的变量,而定义变量可以是全局变量,也可以是局部变量;声明变量就是说明一个变量,它的类型,名字等,而定义一个变量则还要对它进行初始化。
4、委托(代理)的概念:一般来说,方法是不可以用来做参数的,但是因为有了委托这个机制,方法就可以用来做一个类的特殊参数(简单地说,带方法参数的类就可以构成委托,这是委托的特征);委托是把一个类中的方法经过封装后可以供别的类来调用(一般方法都是自身类调用),静态方法和实例方法都可以传送,这跟C++中用函数指针传递函数同理。通过委托,使类中的方法成为一个常量进行传递)

委托需要4个步骤:
(1)定义一个输入参数与要进行封装的方法完全相同的代理对象。

 

        public delegate void GreetingDelegate(string name);//定义委托,它定义了可以代表的方法的类型


(2)定义所有输入参数与在第1步中定义的代理对象相同的方法。

 

       public void EnglishGreeting(string name)

      {
             Console.WriteLine("Morning, " + name);
      }

      public void ChineseGreeting(string name)

      {
             Console.WriteLine("早上好, " + name);
      }


(3)创建代理对象,并与希望封装的方法进行连接。 (多形式)

3.1

      GreetingDelegate delegate1 = new GreetingDelegate(EnglishGreeting);//直接用构造函数连接方法

      delegate1 += ChineseGreeting;   // 给此委托变量再绑定一个方法

3.2

      GreetingDelegate delegate1 = new GreetingDelegate();
      delegate1 = EnglishGreeting;   //赋值连接方法
      delegate1 += ChineseGreeting;   // 给此委托变量再绑定一个方法

3.3//隐式连接

       private static void GreetPeople(string name, GreetingDelegate MakeGreeting) //要调用委托的地方

       {
               MakeGreeting(name);
       }

 

     static void Main(string[] args)

      {
               GreetPeople("Jimmy Zhang", EnglishGreeting);
               GreetPeople("张子阳", ChineseGreeting);
               Console.ReadKey();
       }

(4)通过代理对象调用封装的方法。(多形式)

       private static void GreetPeople(string name, GreetingDelegate MakeGreeting) //要调用委托的地方

       {
               MakeGreeting(name);
       }

       !注意:被连接方法的实际参数在程序调用委托的时候提供

     

   4.1//显通过委托调用

    static void Main(string[] args)

   {
          GreetingDelegate delegate1, delegate2;
          delegate1 = EnglishGreeting;
          delegate2 = ChineseGreeting;

           GreetPeople("Jimmy Zhang", delegate1);
           GreetPeople("张子阳", delegate2);
           Console.ReadKey();
    }

    4.2//隐式绕过委托调用

       static void Main(string[] args)

      {
               GreetPeople("Jimmy Zhang", EnglishGreeting);
               GreetPeople("张子阳", ChineseGreeting);
               Console.ReadKey();
       }

 

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值