C# 类基础知识

变量作用域

变量名:变量名就像实验室中容器的编号。{} 相当于实验室。

           变量的定义:

                           有嵌套关系的{}语句块中只允许定义唯一的变量。

                           没有嵌套关系的{}语句块可以定义同名变量。

        变量的有效范围:

                             变量在其声明的{}和它的嵌套子块{}有效;

        变量的使用技巧:

                        变量尽量在用之前最近的位置声明。尽量减少有效范围。

                    从逻辑上讲   for (int i = 0; i < 5; i++) { }     if(){}else {}     while(){ }  是一个整体

                         相当于 {for (int i = 0; i < 5; i++) { }}   { if(){}else {} }  {while(){ }}

基本概念

              类是:具有相同属性和行为对象的抽象

           属性值:在面向对象编程里,字段作为保存属性值的变量。字段声明时可以不赋值,会有默认的值。   

              属性:使用特殊的“行为”来表现,一对get/set行为用来展现对象的属性。get/set称为属性的“访问器”,

              方法:方法就是类能够执行的动作。函数中定义的成员使用前必须赋值。

                        面向对象的三个特性:封装、继承、多态。

                       类中只能定义字段、方法等不能包含其他代码。

       this:表示“当前实例/当前对象”,即哪一个对象正在操作属性访问器,this就表示哪个对象。

访问权限/访问权限  

                控制类或类成员在哪些地方可以被访问,这样达到面向对象中“封装”的目的。

            类成员默认为private

public    公开      对访问成员没有级别限制

private   私有      只能在类的内部访问

protected 受保护的   只能由该类和该类的派生类访问,不管该派生类和基类是否在同一程序集中

internal   内部的    访问仅限于程序集中

类默认是internal

public    公开      对访问成员没有级别限制

internal   内部的    访问仅限于程序集中

 

 

            Person p1 = new Person();

            p1.Age =20;//p1所指向对象的Age字段值

 

            Person p2 = p1;//p2指向p1当前指向的对象

            p2.Age = 99;

 

属性    习惯用法:属性开头字母大写,字段开头字母小写

          字段设为private的原因。防止直接对字段非法进行读取或修改操作。

        private int age;

        //当进行读取或修改操作时,确定不需要对操作进行限制时可以简写

        public int Age {  get;  set;  }

        //当进行读取或修改操作时,需要对读取或修改操作进行限制时

        public int Age{  get { return age; }  set { age = value; }   }

       反编译:

        public void set_Age(int value) {

            this.age = value;

        }

        public int get_Age() {

            return this.age;

        }

                备注:非简写的情况下:可以只用set或者只用get就可以定义只读或者只写属性。

  简写情况下:setget必须同时存在。

构造函数:

构造函数中对对象进行初始化。是用来创建对象的特殊函数,函数名和类名一样,没有返回值,连void都不用。

构造函数可以有参数,new对象的时候传递函数参数即可。可以重载,也就是有多个参数不同的构造函数。

如果不指定构造函数,则类有一个默认的无参构造函数。如果指定了构造函数,则不再有默认的无参构造函数,如果需要无参构造函数,则需要自己来写。

构造函数的调用顺序(父子)

常量

        在类中定义的常量,对于类的任何实例都不变。没有必要通过类的实例去调用。

         class Program {  public const double PI = 3.15;  }

         引用:在类外部,Program.PI;   类名.常量名  的形式引用  

        const常量。常量名所有字母全大写。一定不会变化的值才能声明为常量。

静态成员

        也可以理解为全局成员。如:中国人类 有成员 name,language name会因为不同的人而有不同的值。而language仅与中国人类有关。因为所有人都是汉语。

    在类外部引用:类名.变量名  类名.方法名()

            int a = Person.age; Person.SetName();

    class Person{

        //静态成员不与类的任何实例相关联。对于类只有这一份。起到全局的作用。

        public string name = "王菲";

        public static int age = 15;

        //在类内部的静态方法中,不能调用非静态变量和方法。

        public static void SetName() {

            //string s = name;

            //SetAge();

        }

        //在类内部的非静态方法中,可以调用静态变量和方法。

        public void SetAge() {

            int i = age;

            SetName();

        }

    }

 

 

原文地址:https://www.cnblogs.com/sdpdf/p/3960404.html