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

几个重要的问题:

  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);
         }
     }
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 1. Java基础部分 基础部分的顺序:基本语法,类相关的语法,内部类的语法,继承相关的语法,异常的语法,线程的语...
    子非鱼_t_阅读 35,134评论 18 399
  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 137,051评论 19 139
  • C++文件 例:从文件income. in中读入收入直到文件结束,并将收入和税金输出到文件tax. out。 检查...
    SeanC52111阅读 3,166评论 0 3
  • DJX_f6cf阅读 201评论 0 0
  • 便签:第13拆 辅导导师:牛慧芳 R《你为什么总焦虑》第119-120页 我们每个人都有四个心理享受点,它们分别是...
    虹语阅读 220评论 0 0

友情链接更多精彩内容