zoukankan      html  css  js  c++  java
  • c#基础知识复习

      平时写代码也就依照样子画葫芦,重复着相同的工作,也很无聊,现在开始整理下,一些基础知识,都已经快忘记光了,写下来记录下,平时还可以重温下。

      什么是属性?

      比如:

      public class A{

        public int Id{get;set;}

        public string Name{get;set;}

      }

      上面是一个类,那么我们要访问的属性,就是:

        A  model=new A();//调用类

        A.Id//Id就是属性

      平时我们都是这么来写代码的。分析下:官网说法:属性结合了字段和方法的多个方面。对于对象的用户,属性显示为字段,访问该属性需要完全相同的语法。对于类的实现者,属性是一个或两个代码块,表示一个 get 访问器和/或一个 set 访问器。当读取属性时,执行 get 访问器的代码块;当向属性分配一个新值时,执行set 访问器的代码块。不具有 set 访问器的属性被视为只读属性。不具有 get 访问器的属性被视为只写属性。同时具有这两个访问器的属性是读写属性。

      官网的说法,还是蛮好的。一看就明白了。通俗点说就是通过get和set两个东东去设置的熟悉,调用的话,对象中调用我们叫属性,类中书写,就是set和get的方法。

      好吧,我们会通常说属性基本上就是字段的应用了。

    public class Date
    {
        private int month = 7;  //"backing store"
    
        public int Month
        {
            get
            {
                return month;
            }
            set
            {
                if ((value > 0) && (value < 13))
                {
                    month = value;
                }
            }
        }
    }
    Date model=new Date();//Month=7,month=7;
    model.Month=9;//Month=9,month=9;

    当我们初始化model的时候,去执行Date类,那么开始从上到下执行,month是一个private私有变量,只有内部访问,也就是说外部(其他类型或者成员)不能直接调用,只有在Date里面自己调用自己,那不就是说,我们只能在Date类里面改自己的值了。
    Month是public,声明属性的话,默认是public,不解释了。看看里面的get和set。
    get就是去得到这个属性的值,这里的return month那么Month是值就是month的值7了,set就是去设置这个值看看是否符合要求,这里是 Month 值设置为 1 和 12 之间,那么结果就是Month=7,month=7;
    看看model.Month=9;这不就是去set嘛,好吧就是,那么判断是否是1到12之间,是的话,month=value。结果就是:Month=9那么此时的month呢?我们不是看到了month=value那么month也是9了。

     知识点:类型就是enum(枚举类型),class(类),interface(接口),struct(结构)等类型。类型成员如函数,成员变量等。

      我们现在开始看看,几个不同的例子:

      1.mode.Month=125;//Month=9,month=9;

      2.如果Date里面加上,

      public int num { get; set; }
      public string str { get; set; }

      这个不就是我们常常这样子写的,那么初始化的话,int默认是0,str为null,后面一样的原理set和get了。

      3.如果在Date里面的Month里面的set里面设置:

       public int Month { get; set; }//初始化Month为0

      4.如果去掉month:那么这样子就会出错。

    public int Month
    {
    get
    {
    return month;
    }
    set
    {
    if ((value > 0) && (value < 13))
    {
    month = value;
    }
    }
    }

      属性结束了,想想还是很简单不就是set和get。

      什么是继承?

      概念什么自己去百度吧,我的理解就是父类和子类,比如:

      class A{//父类

      ****一些方法属性****  

      }

      class B:A{//子类

      ****一些方法属性****

      }

      B既然继承了A的所有方法和属性,那么我就直接用吧,当然每个人都有秘密,A也不例外,A也有一些不想告诉你的,那么A就private了,B说我想看private的,A说抱歉哦不给你看哦。

      关键点:

      1.子类拥有父类非private得属性和功能;
      2.子类具有自己的属性和功能,即子类可以扩展父类没有的属性和功能;
      3.子类还可以以自己的方式实现父类的功能(即方法重写)。

      当然还有protected这个东东,protected修饰符表示继承时子类可以对父类有完全访问权。

      

      class B:A{//子类

        public B():base();//子类构造方法需要调用父类同样参数类型的构造方法,用base关键字代表父类

        ****一些方法属性****

      }

      对于调用父类的成员,可以用base关键字。

      构造方法:B的构造方法就是B(),那么A的就是A()这个c#就是默认的,但是我们可以根据我们的要求去书写自己的构造方法,比如在A中写一个带参数的构造方法,如:A(string name)

      如果是继承怎么写,很简单就是:

         public B(string name):base(name){

      }

      就是这么的任性。

      如果理解有误,请指出。

      

      

  • 相关阅读:
    Lucene学习总结之七:Lucene搜索过程解析
    Lucene学习总结之六:Lucene打分公式的数学推导
    Lucene学习总结之五:Lucene段合并(merge)过程分析
    Lucene学习总结之四:Lucene索引过程分析
    Lucene学习总结之三:Lucene的索引文件格式(1)
    Lucene学习总结之二:Lucene的总体架构
    Lucene学习总结之一:全文检索的基本原理
    解决Eclipse中文乱码
    【Lucene4.8教程之五】Luke
    【Tika基础教程之一】Tika基础教程
  • 原文地址:https://www.cnblogs.com/jristy/p/4383413.html
Copyright © 2011-2022 走看看