C#学习笔记(一)
笔者是在有Java编程经验(《Java语言程学设计》作者:梁勇)的基础上,进行C#的学习。
- 编译器 : Visual Studio Code 2017 for Mac
入门:
-
慕课网C#入门教程,因为有基础,所以只花了一两个小时完成了此教程。个人感觉过于基础,付出的时间与收获不成正比。第一章对于不熟悉VS code的人比较有用。
收获如下:①. Console.Write() 与 Console.WriteLine()的区别(后者可换行,相当于java中sysout加入 \n)
②. 如何创建控制台小程序,如下图所示
控制台小程序图③. C#基础程序结构:如下图所示, 基础结构图
④. C#中,Console.WriteLine("a = {0}, b = {1}, c = {2}", a, b, c),其中大括号那几个部分,相当于Java以及C语言中的格式化输出符(%d之类的)
-
C#菜鸟教程,花将近一个小时可获得较大提升。
其基础教程中,与Java基础语法上的一些区别:
- C#中的布尔类型是bool,Java中是boolean
- 动态类型 dynamic ,可以存储任何类型的值在动态数据类型变量中(但是对象类型变量的类型检查是在编译时发生的,而动态类型变量的类型检查是在运行时发生的)
- 一个字符串前面若带@的话,可以自动将“\”当做普通字符对待
- 指针类型 type* identifier
- C#的类型转化跟Java差别不大,也有ToXXX()之类的方法
- System 命名空间中的 Console 类提供了一个函数 ReadLine(),用于接收来自用户的输入,并把它存储到一个变量中。
- C#中也存在 \n
- 可以关注一下类运算符
- 复习一下,条件运算符 Exp1 ? Exp2 : Exp3
- 再复习一哈foreach循环,例子:foreach(int i in Array)
- 访问修饰符
public:所有对象都可以访问;
private:对象本身在对象内部可以访问;
protected:只有该类对象及其子类对象可以访问
internal:同一个程序集的对象可以访问;
protected internal:访问限于当前程序集或派生自包含类的类型。- C#中的方法定义跟Java中大同小异
- 参数传递的方式有三种:
① 值传递,跟Java C什么的一样
② 引用传递,需要在类型定义之前加上ref
③ 按输出传递参数,return 语句可用于只从函数中返回一个值。但是,可以使用 输出参数 来从函数中返回两个值。
NumberManipulator n = new NumberManipulator();
n.getValues(out a, out b);- 可空类型,int ? i = 3; int i; 与 int ?? i;默认值是不同的
num3 = num1 ?? 5.34; // num1 如果为空值则返回 5.34- String 和 Array类都有很多有用的方法,可以去MSDN文档查看。以及,字符串转Datetime格式有点意思,在输出的时候还可以选择t和D
16.枚举是一组命名整型常量。枚举类型是使用 enum 关键字声明
17.析构函数 的名称是在类的名称前加上一个波浪形(~)作为前缀,它不返回值,也不带任何参数。析构函数用于在结束程序(比如关闭文件、释放内存等)之前释放资源。
18.C#的继承,但是语法不同 如 class Rectangle: Shape,C#也不能多重继承,也可以通过接口来实现- 通过在类定义前面放置关键字 sealed,可以将类声明为密封类。当一个类被声明为 sealed 时,它不能被继承。抽象类不能被声明为 sealed
- 虚方法virtual和abstract的区别是,virtual可以有方法体,可以被重写,而后者则是“必须”。重写必须要有关键字override
- 静态多态性:编译时发生函数响应(调用)
动态多态性:运行时发生函数响应。- C#可以进行运算符重载,C#运算符重载
- C#的接口定义跟Java差不多,实现接口也是通过 :
- 在一个命名空间中声明的类的名称与另一个命名空间中声明的相同的类的名称不冲突,命名空间可以嵌套
- using XXXX类似于Java中的import XXXXX
BTW,今天是锤子罗永浩号称要“改变世界”的一天。不知道锤子罗会不会再次被打脸🤣🤣🤣
网友评论