写在前面
阿姜的主修课C#预习开始啦!不要998!不要98!只要!!——————————我期末能过(;´д`)ゞ
C# 语言简介
微软开发人员需要记住的日期:2002年6月22号.net上线
net与c
- .net/dotnet:一般指.Net Framework框架,一种平台,一种技术。
- C#(sharp):一种编程语言,可以开发基于,net平台的应用。
- Java即是一种平台又是一种编程语言
.net都能干什么
- 桌面应用程序 Winform(.net开发的桌面应用程序叫Winform应用程序)
- Internet应用程序 ASP.NET (.net开发的internet应用程序叫ASP.NET应用程序)
- 手机开发 wp7,wp8
- Unity3D游戏开发或者虚拟现实
开发环境与学习资料
IDE:Visual Studio(可见工作室) 所见即所得。
VS中的常用快捷键:
•Ctrl+K+D:快速对齐代码
•Ctrl+Z:撤销
•Ctrl+S:保存(一定要经常保存!)
•Ctrl+J:快速弹出智能提示
•Shift+End 、Shift+Home
•Ctrl+K+C:注释所选代码
•Ctrl+K+U:取消对所选代码的注释
•F1:转到帮助文档
•折叠冗余代码:#Region 和#EndRegion
我们通常一个解决方案下面有多个项目,所以启动项目设置需要更改。
学习资料
下载离线 MSDN 文档
MSDN 在线文档
MSDN 的全称是 Microsoft Developer Network。这是微软公司面向软件开发者的一种信息服务。MSDN 实际上是一个以 Visual Studio 和 Windows 平台为核心整合的开发虚拟社区,包括技术文档、在线电子教程、网络虚拟实验室、微软产品下载(几乎全部的操作系统、服务器程序、应用程序和开发程序的正式版和测试版,还包括各种驱动程序开发包和软件开发包)、Blog、BBS、MSDN WebCast、与 CMP 合作的 MSDN 杂志等等一系列服务。
C#入门程序
基本结构
文件显示
.sln:解决方案文件,这个文件中包含着当前这个解决方案的一些信息,我们可以双击打开。
.csproj:项目文件,里面包含着当前这个项目的信息,不允许双击打开
注释
1)、单行注释 //
2)、多行注释 / 要注释的内容 /
3)、文档注释 ///
数据类型
decimal:金钱类型,精度要高于double类型
占位符
挖个坑,再填个坑。占位符需要我们注意的地方:
1)、占位符从{0}开始
2)、你挖了几个坑,就填几个坑,如果你多填了,没有效果,但是如果你少填了,程序抛异常
3)、占位符最终按照填坑的顺序输出
Convert类型转换
用于字符串转int类型,举个例子
1 | int a = Convert.ToInt32(Console.ReadLine()); |
枚举
语法:
1 | public enum 枚举名 |
public:访问修饰符。访问的权限,公开的,公共的,谁都能访问。
enum:表示声明枚举的关键字
枚举名:必须要Pascal命名规范。每个单词的首字母都要大写。
结构
一次性声明多个不同类型的变量
1 | 语法: |
out参数
可以帮助我们在一个方法中返回多个值,不限类型。
使用out参数的时候要求,out参数必须在方法内为其赋值。
1 | static void Main(string[] args){ |
手写int.TryParse(string s,int result)——将一个字符串转换成int,转换成功返回true,并将result变成转换的数字,失败则返回false
1 | public static bool MyTryParse(string s,out int result){ |
ref参数
ref参数侧重于将一个变量以参数的形式带到一个方法中进行改变,改变完成后,再讲改变后的值带出来。
在使用ref参数的时候需要注意:ref参数在方法外必须为其赋值。
1 | public static void change(ref int n1,ref int n2){ |
params可变参数
将实参列表中跟可变参数数组类型一样的参数当做是可变参数数组中的元素。
可变参数必须形参列表中的最后一个元素
1 | public static void GetScore(string name,params int[] score){ |
方法的重载
方法的重载指的是方法的名称相同,但是参数不同。
参数不同:
1)、如果参数的个数相同,那么参数的类型就不能相同。
2)、如果参数的类型相同,那么参数的个数就不能相同。
方法的重载跟返回值没有关系。
类的字段和属性
类中的成员如果不加访问修饰符,默认是private:私有的,只能在类的内部访问,出了这个类之后,就访问不到了。
1 | public class Person{ |
成员名字和属性名字都是有讲究的,成员开始为_,属性开始大写字母。
或者还有一种更为简单直接的写法:
1 | public string Name{ |
这个编译的时候会自动生成字段和方法。弊端:get和set不好进行加深的操作。
构造函数的特点
1)、可以重载
2)、类中默认会有一个无参数的构造函数,当你写了一个新的构造函数后,那个默认的无参数的构造函数就被干掉了。
静态和非静态的区别
问题1:在一个非静态类中,是否允许出现静态成员?
答:非静态类中是可以出现静态成员的。
问题2:在非静态函数中,能不能够访问到静态成员?
答:在非静态函数中,既可以访问到非静态成员,也可以访问到静态成员。
问题3:在静态函数中,能不能够访问到非静态成员?
答:静态方法只能够访问到静态成员。
问题4:在静态类中能否出现非静态成员?
答:不可以,在静态类中,只允许出现静态成员。
<—在调用上,静态和非静态的区别—>
1、在调用实例成员的时候,需要使用对象去调用
2、在调用静态成员的时候,必须使用类名.静态成员名;
3、静态类是不允许创建对象的
Gargbage Collection
C#不同于C语言,C语言没有自己的垃圾回收机制,需要我们通过析构函数来释放资源,而C#的GC能够:当我们程序结束之后,GC会扫描整个内存,发现如果有的空间没有被指向,则马上把这块空间销毁。
引用另一个项目的类
1、添加要引用的类所在的项目。在引用上右键添加引用
2、引用命名空间——using xxxx
注意:当一个类需要被引用时类的访问修饰符只能是public。而能够修饰类的访问修饰符只有两个:
1)、public
2)、internal:表示只能在当前程序集的内部进行访问(默认)
继承
语法:public class 子类:父类
一个子类继承了一个父类,那么这个子类继承了父类的什么成员?
答:字段、属性、方法、构造函数
子类继承了父类的属性和方法。
子类并没有继承父类的私有字段。
子类并没有继承父类的构造函数,而是会默认的调用父类那个无参数的构造函数,
当你在父类中写了一个有参数的构造函数之后,那个默认的无参数的构造函数就被干掉了,此时子类就调不到那个无参数的构造函数了。
解决办法:
1)、在父类中重新写一个无参数的构造函数。
2)、让子类去显示的调用父类有参数的构造函数。使用关键字:base()
1 | public Student(string name,int age):base(name,age){ |
里氏转换
1)、子类可以赋值给父类。
2)、如果这个父类中装的是子类对象,那么可以将这个父类强转为子类对象。
as和is
is:类型转换 ,如果转换成功,返回一个true,否则返回一个false。
as:类型转换,如果转换成功,则返回对应的对象,如果转换失败,返回一个null。
1 | Person p = new Student(); |
导入命名空间
使用快捷键 alt+shift+F10
File类
Exist():判断指定的文件是否存在
Move(@””,@””):对一个指定的文件进行剪切操作
Copy(@””,@””):对一个指定的文件进行复制操作
Create():创建一个新文件
Delete():删除一个指定的文件
注意:这里的路径名都需要@符号来修饰——@符号的用法:
1)、取消\在字符串中的转移作用,使其单纯的表示为一个\
2)、让代码按照你编译的原格式输出
结语
今天是预习第一天,感觉妈的(*  ̄︿ ̄)在考试之前预习不完了。草!(一种植物)
暴风哭泣😭