this关键字,抽象类和索引器

来源:互联网 发布:淘宝网卖什么赚钱 编辑:程序博客网 时间:2024/06/16 03:15

       一、thi关键字
      1、 this只能在类的内部使用,使用他能访问类实例对象内部任何级别(不同类型的访问修饰符)的任何元素(字段,属性,方法等),但静态
的类型的成员不能访问,因为静态成员不属于对象的一部分。MSDN里面是这样介绍this关键字的:用来引用类的当前实例。
      2、一个类可以实例化成很多对象,每个对象都是不同的实体,因此对this的理解可以转换成对一个类不同实例对象的理解。
      class A
    {
          
int i;    
         public A(int i)
       
{
          
this.i = i;  
        }

         
public void displayI()
       
{
          Console.WriteLine(
this.i);
       }

    }

    
class RUN
   {
       
static void Main(string [] args)
    
{
        A a1 
= new A(1);
        A a2 
= new A(2);
        a1.displayI();
        a2.displayI();
    }

      通过上面例子可以很好的理解1和2的内容。
      3、this可以用来区分当方法参数和数据成员同名时的情况。
      4、this可以把对象作为参数传递到其他的地方。
      二、抽象类
       1、在C#中使用关键字 abstract 来定义抽象类和抽象方法,抽象类可以包含抽象方法和访问器。
       2、使用abstract 声明一个类,表示该类倾向要作为其它类的父类。 这个类中被abstract标识的方法必须被其派生类实现。
       3、一个抽象类可以包含抽象和非抽象方法,当一个类(不是抽象类)继承于抽象类,那么这个派生类必须实现所有的的基类抽象方法。
       4、当抽象类的派生类为抽象时,我们可以避免所有或特定的虚方法的实现,这就是抽象类的部分实现。
       5我们不能把关键字abstract 和 sealed (方法static)一起用在C#中,因为一个密封类不能够被抽象。
      举一个简单的抽象类例子(黑色加粗)
        abstract class Talkable
    {
        public abstract void talk(); 
     
    }
    class People:Talkable
    {
        public override void talk()
        {
            Console.WriteLine("人可以说话");
        }
    }
    通过子类实现抽象类(父类)中说话的方法。
    三、索引器展现格式及一个程序
     class Student
    {
        private string name;
        private int weight;      
        public string this[int index]
        {
            set 
            { 
                if(index==0)
               {
                   name=value ;
               }
            
            else if(index==1)
                 {
                   weight=int.Parse(value);
                 }
            } 
            
            get 
            {
                if(index==0)
                {
                  return name;
                }
                else if(index==1)
                {
                  return  weight+"";
                }
                return null;
            }
        }
    }
    class Program :Student
    {
        public static void Main(string[] args)
        {
            Student s = new Student();
            Student s1 = new Student();
            s[0] = "李刚";
            s[1] = "60";
            int a = int.Parse(s[1]);
            s1[0] = "李燕";
            s1[1] = "40";
            int b = int.Parse(s1[1]);
            Console.WriteLine("{0}的体重为{1}\n{2}的体重为{3}", s[0], s[1], s1[0], s1[1]);
            if (a > b)
            {
                Console.WriteLine("{0}比{1}重", s[0], s1[0]);
            }
            Console.ReadKey();
        }
    }
  

0 0
原创粉丝点击