码迷,mamicode.com
首页 > Windows程序 > 详细

c#基础知识复习

时间:2015-04-01 12:44:28      阅读:178      评论:0      收藏:0      [点我收藏+]

标签:

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

  什么是属性?

  比如:

  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){

  }

  就是这么的任性。

  如果理解有误,请指出。

 

  

  

c#基础知识复习

标签:

原文地址:http://www.cnblogs.com/jristy/p/4383413.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!