Day1:
项目基础理论:
第一个命令行工程
项目平台简介:
.net Framework的第一个版本发布于2002年,.NET Framework是以一种采用系统虚拟机运行的编程平台,以通用的语言运行库(Common Language Runtime)为基础,支持多种语言(C#、VB、C++、Python等)的开发。
net core第一个版本在2016年推出 net core有支持跨平台(Windows,Mac OSX、Linux)能力的应用程序开发框架。
项目创建命名规则:
建议使用公司名(自己名字)+项目名称 最好不要使用中文
解决方案名称可以和项目名称一致(后期有需要可以更改)
项目结构分析:
项目的文件列表
1.程序集信息文件(了解)
如何查看程序集信息
(1)AssemblyInfo查看
(2)程序集信息查看
(3)程序编译通过的程序集文件查看
2.引用
当前项目中可以使用的系统默认模块,
自己写的模块或者第三方提供的模块
3.App.config配置文件(了解)
项目的框架等配置信息,项目需要使用的特点数据信息
获取配置文件信息
(1)在引用中导入Configuration
(2)引入Configuration模块
(3)使用ConfigurationManager管理程序配置的功能类
- <appSettings>
- <add key="MyConfigString" value="Test Config Data"/>
- <add key="Name" value="测试工程"/>
- </appSettings>
- using System.Configuration; // 1.在引用中导入Configuration 2.引入Configuration模块
- namespace ConsoleApp_app.config
- {
- internal static class AppSettingConfig
- {
- public static string resultValue = ConfigurationManager.AppSettings["MyConfigString"].ToString();
- public static string resultValue1 = ConfigurationManager.AppSettings["Name"].ToString();
- }
- }
程序入口文件 program.cs
程序执行的开始
class 类 Program
Main 入口函数
入口文件 - ->入口类 - -> 入口函数
入口函数作用:程序执行后自动执行 其他函数一般都要调用后才能执行
解决方案和项目:
解决方案和项目都是VS提供的用于管理应用程序的容器
一个解决方案可以包含一个或多个项目
这些项目可以利用解决方案,连接在一起,统一编译统一更新
.sln和.csproj文件:
.sln:解决方案文件,里面包含着整个解决方案的信息,可以双击运行
.csproj:项目文件,里面包含着这个项目的信息,可以双击运行
命名空间和类:
命名空间
含义:命名空间是C#组织代码的方式 通常来管理类的方式
分类:系统命名空间和自定义命名空间
关键字:namespace
using关键字:用来引用其他命名空间。不同项目系统会自动添加不同的命名空间
特点:
不能以数字特殊符号开头 不建议使用中文
一个项目中可以根据需要 定义多个命名空间
一个命名空间 可以有多个类 可以解决多个类名字相同的冲突问题
类
含义:类也是C#组织代码的方式 通常来管理具体数据的方式
分类:系统类和自定义类
关键字:class
特点:类要放在命名空间中
包含:字段 属性 方法 构造函数 析构函数 事件 等......
C#基础规则与代码
C#的3种注释符号:
单行注释://
多行注释:/*要注释的内容*/
文档注释: 多用来解释类或者方法
折叠冗余代码:
#Region
要折叠的内容
#EndRegion
VS的常用快捷键:
Ctrl+K+D:快速对其选中代码
Ctrl+K+C:注释所选代码或光标所在行
Ctrl+K+U:取消对所选代码的注释或光标所在行
F1:转到帮助文档
Ctrl+S:保存
Ctrl+Shift+B:生成解决方案
Ctrl+F:在文件中查找
Ctrl+E,D:格式化全部代码
F5:启动调试
Ctrl+Shift+E:显示资源管理器
Ctrl+Shift+G:显示源代码管理器
Ctrl+Shift+O:内置导航
Ctrl+L:删除光标所在行(只需将光标移至该行,不需要选中整行)
Ctrl+C:复制光标所在行
Ctrl+X:剪切光标所在行
标识符
标识符是用来识别类、变量、函数或任何其他用户定义的项目。在C#中,类的命名必须遵循如下基本规则:
- 标识符必须以字母、下划线或@开头,后面可以跟一系列的字母、数字(0 - 9)、下划线(_)、@。
- 标识符中的第一个字符不能是数字。
- 标识符必须不包含任何嵌入的空格或符号,比如? - + ! # % ^ & * ( ) [ ] { } . ; : " ' / \。
- 标识符不能是C#关键字。除非它们有一个@前缀。例如,@if是有效的标识符,但if不是,因为if是关键字。
- 标识符必须区分大小写。大写字母和小写字母被认为是不同的字母。
- 不能与C#的类库名称相同。
C#关键字
关键字是C#编译器预定义的保留字。这些关键字不能用作标识符,但是,如果您想使用这些关键字作为标识符,可以在关键字前面加上@字符作为前缀。
在C#中,有些关键字在代码的上下文中有特殊的意义,如get和set,这些被称为上下文关键字(contextual keywords)。
下表列出了C#中的保留关键字(Reserved Keywords)和上下文关键字(Contextual Keywords):
保留关键字 | ||||||
abstract | as | base | bool | break | byte | case |
catch | char | checked | class | const | continue | decimal |
default | delegate | do | double | else | enum | event |
explicit | extern | false | finally | fixed | float | for |
foreach | goto | if | implicit | in | in (genericmodifier) | int |
interface | internal | is | lock | long | namespace | new |
null | object | operator | out | out (genericmodifier) | override | params |
private | protected | public | readonly | ref | return | sbyte |
sealed | short | sizeof | stackalloc | static | string | struct |
switch | this | throw | true | try | typeof | uint |
ulong | unchecked | unsafe | ushort | using | virtual | boid |
volatile | while | |||||
上下文关键字 | ||||||
add | allas | ascending | descending | dynamic | from | get |
global | group | into | join | let | orderby | partial (type) |
paryial (method) | remove | select | set |
数据类型
数据类型分类
C#数据类型分为两大类:值类型和引用类型
整形类型 浮点型 字符型 布尔类型 struct(结构)、enum(枚举)
字符串,类、接口、数组、集合,委托为引用类型
//整数类型,对应各种不同的取值范围,整数类型一共有八种
//位(bit):也叫比特,是计算机存储数据的最小单位,表示一个二进制位
//字节:计算机存储数据的单位,一字节等于八位
//有无符号:表示可否存储负数,有符号表示可以存储负数,无符号则只能存储正数
//8种不同的整数类型
byte byteValue = 1;
sbyte sbyteValue = -1;
short shortValue = -1;
ushort ushortValue = 1;
int intValue = -1;//对应C# System.Int32结构 详解 C#数据类型对应的.Net结构图
uint uintValue = 1;
//c语言中,long类型是4个字节,但在C#中为8个字节
long longValue = -1;
ulong ulongValue = 1;
//可以使用sizeof方法。表达式sizeof(type)
//产生以字节为单位存储对象或类型的存储尺寸
Console.WriteLine("{0},{1}", sizeof(ulong), ulongValue);//2 浮点数类型
//小数类型被称为浮点数类型,浮点数类型一共有三种。
//一般默认为double类型
//float:单精度浮点数,占4个字节
//double:双精度浮点数,占8个字节
//decimal:精确的十进制数值,占16个字节
float floatValue = 3.141592699999f;//float后加上f,float即可精确到小数点后7位数
Console.WriteLine(floatValue);
double doubleValue = 3.14159269998876543;//double可精确到小数点后15位。
Console.WriteLine(doubleValue);
decimal decimalValue = 3.141592512345678901234567m;//decimal类型后加上m 保留精准位数
Console.WriteLine(decimalValue);
Console.WriteLine("{0},{1}", sizeof(decimal), decimalValue);//字符类型
//特点:只能存放一个字符或一个汉字 用单引号表示 C#中占2字节
char charValue = 'a';
Console.WriteLine("{0},{1}", sizeof(char), charValue);
//字符串
//特点:引用类型 可以存储多个字符
//表示方式:
//字符串(string)类型是System.String类的别名。
string str = "runoob.com";//单行显示
//@字符串中可以任意换行,换行符及缩进空格都计算在字符串长度之内。
string str21
= @"<script type=""text/javascript"">
<!--
-->
</script>";//特殊字符串 --转义字符
//@将转义字符(\)当做普通字符对待
string str1 = @"C:\nWindows";
Console.WriteLine(str1);
string str2 = "www\\naaaa";
Console.WriteLine(str2);//字符串是特殊的引用类型
//特殊原因:字符串赋值时 和值类型数据赋值是深拷贝
//后续引用类型 赋值是浅拷贝
int number1 = 10;
int number2 = number1;
number1 = 20;
Console.WriteLine("number1:{0},number2:{1}", number1, number2);
string temp1 = "abc";
string temp2 = temp1;
temp1 = "xxx";
Console.WriteLine("temp1:{0},temp2:{1}", temp1, temp2);//布尔类型
//包含两个值 true和false 后续进行条件判断是 常用
bool boolValue = false;
bool bool2Value = true;
//日期类型
DateTime datetimeValue = DateTime.Now;
Console.WriteLine(datetimeValue);