Day01~08_C#基础
01. .Net平台, .NetFrameWork框架. C#的关系
.Net平台:可以按“中国移动互联网平台”来理解;
.Net FrameWork框架:可以按 "信号塔" 来理解;
.Net FrameWork框架是.Net平台中不可缺少的一部分,它提供了一个稳定的运行环境来保证基于.Net平台开发的各种应用稳定的运行;
C#: 是一种编程语言,可以开发基于.Net平台的应用; (Java即是一种平台,又是一种编程语言)
02. .Net能做什么
a. 桌面应用程序: WinForm(.net开发的桌面应用程序,叫WinForm应用程序);
b. Internet应用程序 ASP.Net(.net开发的internet应用程序叫ASP.NET应用程序);
c. 手机开发 wp8;
d. Unity3D游戏开发或者虚拟现实;
03. .Net的交互模式
C/S: 客户机/服务器模式;
B/S: 浏览器/服务器模式;
04. 解决方案、项目、类的理解
解决方案中可以包含多个项目,一个项目中,可以包含多个类 (.cs 文件)
05. C# 结构理解
a. 命名空间:
** 注意:C#中,类文件名称与命名空间是可以不一样的;
** 引用: using 命名空间; (Java中的 import, Delphi中的 uses )
using System;
using System.Collectiions.Generic;
06. 文档结构
一个解决方案,在电脑让展示出来,就是一个文件夹;
解决方案中,每一个项目,是一个独立的文件夹;
在解决方案文件夹下,存在 .suo 的解决方案隐藏文件,这个可以不用关心;只需关心 .sln 解决方案文件即可, 双击.sln文件可直接打开;
.sln: 解决方案文件夹,里面包含整个解决方案的信息,可以双击运行;
.csproj: 项目文件,里面包含着这个项目的相关信息,可以双击运行;
07. 相关快捷方式 (VS 2022) 及注释
ctrl + shift + B: 生成解决方案; 可帮助核查语法错误;
ctrl + B : 生成当前项目
对于其它快捷键,可依据自已的习惯,自行配置
工具》选项》环境》键盘;
* 编辑.设置文档格式( 格式化文档,快速对齐 ) :
* 编辑.删除行 (删除一行);
* 编辑.复制 (复制一行);
* 编辑. 切换行注释(快速单行注释);
* 编辑.切换块注释(快速实现块注释)
* 编辑.将选定行上移 (调整代码位置)
* 编辑.将选定行下移(调整代码位置)
* 调试.启动 (运行软件);
* 调试.切换断点 (配置断点)
* 调试:逐语句;
* 调试:逐过程;
* 视图.查看设计器(新快捷键用于:文本编辑器)
* 视图.查看代码(新快捷键用于:全局)
* 编辑.外侧代码 (动态选择一些代码) ctrl+K,ctrl+S
* 编辑.封装字段 (通过字段,快速生成属性) >> 相当于快速生成Java中的 getter/setter
* 视图.属性窗口 (快速调出属性配置窗口)
* 视图.工具箱(调出控件列表)
注释:
单行注释://注释的内容
多行注释:/* 注释的内容 */
文档注释:/// 多用来解释类或者方法
代码折叠
#region 折叠内容描述
#endregion
08. 其它设置
a. 行号: 工具》选项》文本编辑器》所有语言》常规
b. 字体:
c. 主题
d. 配置还原
工具>导入导出设置: 可以恢复系统配置;
e. 启动项目的配置
解决方案上面右键》属性, 按习惯自行配置
f. 项目的卸载及加载
卸载: 可以将项目暂时脱离解决方案,但同时又不删除文件;
重新加载:可以重新新项目加载到解决方案并做代码编辑;
** 变量的使用
>> C#中,大小写敏感;
>> 变量的命名必须以 "字母", "_", "@" 符号开始, 不能以数字开头;
>> 变量、参数命名: 一般使用 小驼峰命名方式;
类、方法命名 : 一般使用 大驼峰命名方式;
>> 关于占位符的使用
a. 配置了几个占位符,在后面需要提供几个对应的参数;多填了参数,不会产生影响;少填了参数,将会出现异常;
>>常用转义字符
\n: 换行;
\b: 删除前一字符;代表着backspace
\\ : 转义输出一个 \
\t: 转义输出制表符;
\" : 转义输出 "
\r\n: windows平台下的换行
** @ 符号的使用:取消后面内容中的 \ 的转义作用,纯粹当作是一个 \
string path = @"D:\a\b\c\d\e.txt";
** @的另一种使用方式: 将字符串按原格式输出;
>> 占位符输出时的格式化 : 0.00, 需要几个小数,在小数点后就配置几个0
** 波浪线
红色波浪线:代码中出现了语法错误;
绿色波浪线:语法无错,提示有可能出现错误 (申明未使用等情况);
09. 基本数据类型
C#中的基本数据类型 Java中的基本数据类型及对应的封装类
C#中的数据转换注意点
a. 小数类型,默认为double;
b. decimal 与 double 之间,互相不能隐匿转换; (浮点间仅支持 float 向 double 的隐式转换)
c. decimal表示128位数据类型,同浮点数相比,decimal类型具有更高的精度和更小的范围,这使它适合于财务和货币计算。
如果要标识一个数据为decimal类型,需要在数据后面配置上 m 或 M;
d. float 类型,最终会被映射为 framework中的 single; (小数一般默认为double);
f. String , string; 这二个最终都会被映射为 String;
g.数据类型不一致时,通过 Convert 进行数据类型的转换;
> 将字符型数值转数值型数据:
double infoa = Convert.ToDouble("123");
int infob = Convert.ToInt32("123");
> 数据类型.TryParse (number1=0,这个初始值无效,若转换失败,由 TryParse 返回 0 );
相当于Delphi中的 number1 = StrToIntDef("123",0);
>> 常量
const double NPI=3.14;
>> 枚举
[public] enum 枚举名
{
值1,值2,值3....
}
** 枚举类型与int类型,默认是可以转换的;
> 转换时,枚举类型从0开始转换,枚举1号内容对应于int类型中的0
> > 枚举成员中转换为int值时,若枚举成员中有成员配置了值,则从配置的值之后的枚举值,均以配置的值为基数,每往后1位,值+1
** 通过 ToString 方法, 可以将枚举成员值,直接转换成对应的字符;
通过 Enum.Parse(typeof(枚举类型),"字符");
>>结构
可以帮助我们一次性声明多个不同类型的变量
[public] struct 结构名{
成员; (字段)
}
字段: 结构体中的成员,命名方式,一般以 _ 开始,如: publict string _name;
>> 数组
数据类型[] 变量名 = new 数据类型[数组长度];
int[] nums = new nums[10];
** Array.Sort(数组变量);
** Array.Reverse(数组变量);
**方法
语法: [public] static 返回值类型 方法名([参数列表]){
方法体;
}
return:
a.在方法中返回要返回的值;
b. 立即结束本次方法;
调用方法:
类名.方法名([参数]);
若类名与main函数在同一个类中,可以省略类名;
>>关于方法的使用
1. 编制函数时,功能一定要单一,不要将多个功能集成在一个函数中;
2. 在编制函数时,不要在函数中有交互类的业务;
10. 关于方法中,参数修饰符的使用 (这一点需要注意)
>> 关于out的使用
参数定义时,需要配置out: public static void Test1(int[] a, out int x, out int y, out int z)
参数使用时, 同样需要配置out: (函数外部可以不赋值,函数内部必须赋值)
>> 关于 ref 的使用 (外部必须赋初始值,函数内可以不处理)
>> 可变参数 params的使用 (params只能是最后一个参数)
>> 方法的重载
函数名称一样,参数类型不同或者参数个数不一样 时,这些同名函数构成重载;
11.再说 面向过程 和 面向对象
面向过程: 关注的是怎么做的问题;注重过程与步骤,不注重职责分工;对于复杂的项目,没有固定的套路,难度较大;
面向对象:关注的是由谁来做的问题;对于一个功能的实现,可以由不同的对象,按不同的顺序来完成;是一种更大程度上的封装;
12. C#中关于类的使用说明
** 访问修饰符
** 关于类的创建
13. Array, ArrayList, List
Array: 数组,对同一类型数据的一个整体的定义,定义好以后,长度不允许变更;
ArrayList:
大小是按其中存储的数据来动态扩充与收缩的;
声明ArrayList时,不需要指定长度;
可以方便的添加,修改,删除内部数据;
---- 但是
存储数据时,使用的是 object类型,所以存在类型不安全的总是,(在添加时,不管什么类型都可以添加进去);
数据存储存在 装箱,拆箱的操作,性能偏低;
List:
与 ArrayList 一样,继承了相同的接口;所以使用上与ArrayList 相似;
在声明List时,需要同时声明 List 集合内的对象类型;
14. 字典 Dictionary;
Dictionary<keyType, ValueType> dic = new Dictionary<keyType,ValueTye>();
按Java中的Map理解即可;
15. foreach
* 数组操作
* 集合操作
* 字典操作
保留2位小数的三种方式
控制台背景色、前景色的使用