1.C#、.Net和ASP.Net
- .Net是一个平台,提供了运行.Net程序需要的虚拟机、类库等
- C#是.Net平台下的一个语言,.Net下的语言还有VB.Net、PowerShell等
- ASP.Net是.Net下开发网站的技术
读音:dot net、点儿奈特
C#:C Sharp,C沙坡
常用的开发工具是Visual Studio,简称VS;如果不用VS开发,其实安装.Net Framework即可运行.Net开发的程序,装VS的时候把.Net Framework同时装上了。运行程序也不需要装VS,有.Net Framework即可。
2.关于项目(Project)
什么时候新建一个项目:相关功能放到一个项目中,QQ:文件传输、聊天、视频聊天、QQ群。
解决方案:相关的项目放在一个解决方案中,避免一个解决方案中项目太多,也不便于管理。
创建解决方案(Solution):一个解决方案下建多个项目(Project),多个相关的项目放到同一个解决方案中;还有一种快速建立解决方案和第一个项目的方法;
打开其他解决方案的方法:.sln。
打开其他项目的方法:.csproj
sln、csproj只是文件的结构,还要cs等文件;
3.项目的生成(Build)
项目“生成”就是把项目中的代码编译(Compile)成二进制可执行程序(exe、dll等),dll无法独立运行;
修改代码后,如果不“生成”,那么exe中还是旧的运行效果;
修改代码后直接运行exe还是之前的代码,“开始执行”或者“开始调试”后会自动保存并且“生成”;
3.1“生成解决方案”和“重新生成解决方案”有什么区别?
- 生成解决方案:已经是最新的就跳过。
- 重新生成解决方案:先把已经生成好的全部删掉,然后再生成一遍。
3.2 Debug和Release有什么区别?
- Debug 通常称为调试版本,它包含调试信息,并且不作任何优化,便于程序员调试程序。
- Release 称为发布版本,它往往是进行了各种优化,使得程序在代码大小和运行速度上都是最优的,以便用户很好地使用。
4.控制台编程
- Console.WriteLine(“Hello”)是在屏幕的当前位置输出一个字符串,并且在结尾换行;Console.WriteLine()是只执行换行;Console.Write(“RuPeng”)是在屏幕的当前位置输出一个字符串,不换行。这几个Write支持各种数据类型。
- Console.Beep():是让计算机发出蜂鸣声(有些计算机可能不支持); Console.Beep(1000,1000);是指定频率和持续时长(毫秒); (*)趣味: Beep音乐.txt
- Console.Clear()清除屏幕上的内容;
- Console.ReadKey()等待用户输入一个按键再继续向下执行,(*)可以通过返回值获取哪个按键被按下。不要错用成了Console.Read()。因为Main执行结束后程序就退出了,为了避免控制台程序一闪而过,一般最后加上一行Console.ReadKey()。不要乱加Console.ReadKey()
- string s = Console.ReadLine();等待用户输入一行字符串,直到回车;通过返回值获取用户输入的内容。
- Console.Write**();Console.Read**()默认都是把光标显示到当前位置(自动流动)
- Console.SetCursorPosition(5, 5)设定光标位置,后面的输入、输出都会从这个位置开始“流动”;默认宽和高分别是80*25个字符。纵向可以滚屏,但是不能滚太多。
- Console.BackgroundColor = ConsoleColor.Red;设置背景颜色。 Console.ForegroundColor = ConsoleColor.Yellow;设置前景颜色; 设置之后的受影响,之前的不受影响。注意这里是给“属性”赋值,和方法调用不一样,还涉及到“枚举”。“属性”、“枚举”以后会讲,先暂时记住用法。
- Console.ResetColor():恢复前景、背景颜色的默认值;
- Console.Title = “hello”;设置控制台标题;颜色不能改。
- 除了这里讲的,其他的Console方法不用研究,也不用琢磨“***效果如何实现”,控制台编程不是重点。
5.反编译
反编译工具: ILSpy、 Reflector (收费,可能会搞崩VS)
把编译程序“反编译”为cs代码。从原理上无法原样还原,比如:
- 注释没有;
- 编译器优化:int i=5+6;(被优化掉了)加上一个WriteLine(常量合并),修改后ILSpy中Reload
- 反编译工具的bug、不足
.Net反编译工具不能反编译用C等开发的程序。
如何避免反编译:混淆器。没有太大研究价值。因为现在主要都是在做asp.net web开发;