c#学习记录(js相比较)

2016-03-12  本文已影响0人  寿_司

几个重要的问题:

  1. c#强调封装,在程序中,只有一个一个类,没有像js一样类似于主执行语句的那些东西。主执行的那些东西靠的是main函数来实现的。(所以js才有(function(){})这种立即执行的语法规则)

  2. c#中字段设置的意义:字段为了保持私有性,能不给的尽量不给,防止出错,所以字段只能内部使用,外部要通过属性的设置来对字段的数值进行访问,修改和计算。一般的字段都是private来修饰的。

  3. static的讲解:来设置全局的属性方法等。static修饰的构造函数只能执行一次,一般是给静态字段(全局变量)赋值

  4. 对类成员(字段,属性,方法)的访问:类内部访问自身this.成员名或者直接成员名;类外部访问其他类的成员对象.成员名(必须先实例化为对象才可以进行访问);static的比较特殊,不能实例化,直接类名.成员名

  5. 抽象类出现的意义:c#是单一继承模式,能不给的尽量不给,抽象类的存在就是为了解决这个问题,抽象类里只放入基类想要派生的东西,然后继承给子类,很好的保护了基类成员的私有性。

  6. 接口是:c#语言的多态性,又一个基类可以派生好多实现不同功能的类,这些功能可以近似的称之为接口吧。

  7. Mac编写c#程序我的配置是:mono环境下VScode编写,需要手动进行编译,然后运行编译:mcs hello.cs 运行:mono hello.exe 然后才会输出Hello Mono World.完成了!!!

     //WTF!!!C#最大的特色是不允许直接操作内存,去掉了指针操作。
     // 建立一个student的公有类,里面有字段stuNumber和stuName,公有属性StuNumber,构造函数Student传入这两个参数
     using System;
    
     public class Student{ //类名首字母看情况大写,不大写也不会报错。
         public static string school; //尽量不要定义全局变量,不是必须的话,会浪费资源,通常情况下作为工具类需要定义全部变量
         private string stuNumber; //定义字段一般使用private,之后通过属性,方法等访问内容,保持私有性,比较安全的做法
         private string stuName;  //stuName这个字段是多余的,因为在Main函数中并没有被用到,然而c#又是通过各种类进行对数据的操作,stuName是私有的,别的类,尤其是Main并没有办法访问,所以他的存在只是在浪费资源,  
    
         public string StuNumber{   //最好大写首字母,完成对私有类属性的访问修改
             get { return stuNumber; } //只读属性
             set { stuNumber = value; } //只写属性
         }
         public Student(string num, string name ){ 
             //构造函数不能有返回值类型,甚至连void都不能有,并且构造函数名必须和类名保持完全一致
             //参数有几种:1.值类型(没有多余修饰符)2.引用类型(ref修饰)3.输出类型(out修饰)4.数组类型
             stuName = name;     // this带不带均可。
             this.stuNumber = num;   
         }
         static Student(){ //另一种构造函数模式:静态构造函数,在整个程序中只能执行一次,一般是给静态字段(全局变量)赋值。)
             school = "tjut";//不能加上this,因为static是一个全局变量,不属于某一个类,没有static的是实例方法,有static的是静态方法。加上static的成员被类的所有的实例对象共享,便于对象之间的互相通信
         }
     }
     //同一个类中的其他方法调用:『方法名』类外部的其他方法调用:『对象名.方法名』
     //static声明的静态方,直接『类名.方法名』,不需要实例对象就可以使用
     class Program{
         static void Main(string[] args){ //Main函数是可执行程序的唯一入口点,程序在Main中开始,也在Main中结束,
             Student newStu = new Student("2014","msk");
             Console.WriteLine(Student.school);
             Console.WriteLine(newStu.StuNumber);
         }
     }
上一篇下一篇

猜你喜欢

热点阅读