C#(Csharp)环境配置

准备开发环境VS

VS下载链接

自测可用的产品密钥pro版:
NYWVH-HT4XC-R2WYW-9Y3CM-X4V3Y

我的第一个Csharp控制台程序:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace dome2
{
    class Program
    {
        static void Main(string[] args)
        {
            //这句话用于输出在命令提示符中输出Hello World!
            Console.WriteLine("Hello World!");
            //等待用户输入键值
            Console.ReadKey();
        }
    }
}
笔记
项目文件包含类文件
命名空间namespace
 	.net中提供应用程序代码容器的方式 
 	类在里面 
 	命名空间以.隔开表示层级关系
using能够为命名空间namespace起别名(using 别名=命名空间)
标识符	
 	标识符只能由大写字母\小写字母\数字和下划线组成
 	必须以字母或者下划线开头
 	Csharp对大小写敏感
 	如果要使用Csharp的关键字作为标识符需要在前加@
 	标识符命名要从简易辨认

关键字
  Csharp中编译器能识别的特殊单词
  
代码规范
 	逻辑要清晰
 	大括号 
 	以;结束一行
 	大小驼峰命名
 	对于简单的变量建议使用小驼峰
 	对于比较高级的变量名建议使用大驼峰
注意事项
 	VS可以绑定微软账户,虽然我也不知道有什么用,但是可能有用吧
 	c#是完全面向对象的编程语言
 	.net(dotnet)是框架
 	c#是编程语言
 	VS的软件size比较大,所以尽量选在在网速快的地方下载
 	开始下载的为VS的下载器
 	下载时可以根据自己的需要选择一部分组件
 
 变量
 	声明变量[变量初始化]
 	变量赋值
	使用变量
语法格式
声明变量
	数据类型 变量名;
赋值
	变量名=变量值;
变量要先声明再赋值
赋值运算符 =
变量可以重复赋值
变量命名规则
	必须以字母或_或@开头
	后面可以跟任意字母\数字\下划线
	变量名尽量不要与Csharp中的关键字重复
	大小写敏感
	同一个变量名不允许重复定义
	变量名要有内涵意义
	使用英文单词的缩写代表完整单词时要此缩写全部大写
常量
	程序运行中不能改变的数据
	const 数据类型 变量名;
数据类型
	sbyte	有符号8位整数
	byte	无符号8位整数
	short	有符号16位整数
	ushort	无符号16位整数
	int	有符号32位整数
	uint	无符号32位整数
	long	有符号64位整数
	ulong	无符号64位整数
	float	32位单精度实数
	double	64位双精度实数
	demcimal	128位十进制实数
	bool	布尔类型true false
	字符类型
	char	字符 每隔字符对象与Unicode字符集的字符对应
	引用数据类型
	object 对象
	String(string)	字符串类型
内存
	堆
	栈
	静态存储区
数值类型存储在栈中
引用类型存储在堆中	
Console.WriteLine();//输出内容并换行
Console.Write();//输出内容
Console.ReadLine();//用于接收用户输入,输入类型默认string类型
表达式
 	将变量和字面值与运算符组合
 	计算基本构件
简单操作
	加减乘除取余
	赋值
运算符分类
操作数个数
	一元运算符
	二元运算符
	三元运算符
运算类型
	数学运算符
	赋值运算符
	关系运算符
	布尔运算符
	位运算符
	其他运算符
数学运算符
	+-*/%
	++
	--
var++ 先用后加
++var 先加后用
var-- 先用后减
--var 先减后用
赋值运算符
	简单赋值
 	=
	符合赋值
	+=
	-=
	/=
	%=
关系运算符
	>
	<
	>=
	<=
	!=
	==
	结果 true false
操作数为字符类 比较unicode编码大小
布尔运算符
	&&	全真则真 有假则假
	||	全假则假 有真则真
	!	真则假 假则真
	对数据的位进行运算
	^	全真全假则为假 一真一假则为真
	&	全真则真 有假则假
	|	全假则假 有真则真
位运算符
	~	按位取反
	&	与
	|	或
	^	异或
	<<	左移
	>>	右移
	高位在左 地位在右
	左移变大 右移变小
bit(位)
	1Byte=8bit 1字节=8位
	1K=1024Byte
	1M=1024K
	1G=1024M
	1T=1024G
其他运算符
	+ 字符串拼接运算符
	is 动态检查运行时对象的类型是否与给定的类型兼容
	as 
三元运算符
	?:
	运算符的优先级
	(x) .y .(x) [x] ++ -- new typeof sizeof checked unchecked
	+ - ! ~ ++ -- (T)x
	* / %
	+ -
	<< >>
	< <= > >=  is
	== !=
	&
	^
	|
	&&
	||
	?:
	= += -= *= /= <<= >>= ^= |=
优先级别越高 越先执行
流程控制语句
	分支语句
	迭代语句
	跳转语句
分支语句
	if
	switch
	?:
迭代语句
	while
	do while
	for
	foreach
跳转语句
	break
	continue
	goto
	return
字符与字符串
	char
	String
转义字符
	\n
	\r
	\t
	\\
	\v
	\`
	\'
	\"
	\0
	\a
	\b
	\f
字符串
	String 变量名="初始值";
	string类型的变量可以看成是char变量的只读数组
	ToUpper()
	ToLower()
字符串格式化
	C 数字类型 货币单位
	D 整数类型 一般整数
	E 数字类型 科学计数法
	F 数字类型 小数点后的位数固定
	G 数字类型 一般整数
	N 数字类型 通用场合数字格式
	P 数字类型 百分数
	X 只用于整数类型 十六进制格式
字符串插入与删除
	Inset();
	PadLeft();
	PadRight();
	Trim();
	Remove();
字符串复制
	Copy();
	CopyTo();
字符串替换
	Replace();
字符串的查找
	IndexOf();
	int[] a = { 1, 0, 2, 3, 4, };
    int[] b = { 0, 1, 2, 3, 4, };
    Console.WriteLine(Array.BinarySearch(a, 0));
    Console.WriteLine(Array.BinarySearch(b, 0));
    //不知道为什么BinarySearch无法检索位于偶数位上的0
类型转换
	隐式转换	系统会自动转换
	显式转换
StringBuilder类
	Insert();
	PadLeft();
	PadRight();
	Trim();
	AppendFormat();
	Remove();
数组
	声明数组 类型名[,] 数组名 = {};
	遍历数组 length 数组总长度
	数组排序	升序sort 降序reverse
ArrayList类
	ArrayList变量名.Add();
	ArrayList变量名.Remove();
	ArrayList变量名.RemoveRange();
方法的声明与调用
	方法调用时一定要保证参数对齐
虚方法
	虚方法能够被重写
重写方法
	override
	sealed 密封,不允许重写
外部方法
	extern
使用extern关键字由于配合DLLImport属性,所以必须包含static关键字
分部方法
	partial
	partial 前不能有修饰符
方法重载
	方法名相同
	参数类型不同
	参数个数不同
main方法
	程序开始执行的地方,不是加载的地方
	静态成员
结构
	struct
	变量 应有修饰符public private
枚举
	变量类型
	每个值会根据定义的顺序从0开始自动赋予一个整型值
也可以人为指定
	类型转换
		枚举与int型相互转换
		枚举与String相互转换
	要转化的string的内容如果是字母组成必须在枚举中有
类的声明
	在Csharp中除了命名空间其它都是类
	字段用来存放数据
	变量只能存放一个值
	字段可以存放多个值
字段
	采用_cameCase命名方式
属性
	采用PascalCase命名方式
	属性往声明为public
	属性对应的字段往往私有化
	修饰词 对应字段类型 属性名
	{
		get	//get可以用于对取值进行限定
		{
			return = 字段;
		}
		set	//set可以用于对赋值进行限定
		{
			字段 = value;
		}
	}
	外部类访问字段往往是通过属性
	通常将get set称为访问器
	读写 get{} set{}
	只读 get{}
	只写 set{}
	自动 get; set;
	get属性访问器用于返回属性值
	set属性访问器用于分配新值
构造函数和析构函数
构造函数
	没有返回值,不能写void
	修饰符必须为public
	构造函数必须与类名相同
	public 类名()
	{
	}
	构造函数重载
new关键字
	在内存中开辟空间
	在开辟的空间中创建对象
	对对象进行初始化
	创建对象的时候会执行构造函数
	构造函数可以重载
	类中会有一个默认无参的构造函数
	当写一个新的构造函数时,默认的构造函数都会被覆盖,需要时重写
析构函数
	实现销毁某个类的实例对象的方法成员
	无参
	不能有修饰符
	不能被调用
	析构函数与构造函数目的不同,析构函数前加前缀~
	如果系统中没有指定析构函数,那么编译器由GC决定什么时间释放资源
	Csharp有自动回收机制,会在当前对象没有任何引用时自动执行
对象三个基本特征
	封装
	继承
	多态
类的继承
被继承的类为父类(基类)
继承的类为子类(派生类)
	单根性
	传递性
	派生类与基类同名的成员会覆盖基类的成员
	new关键字可以用来隐藏基类中的同名成员
	new实例化对象
	派生类不能继承构造函数的成员
	如果派生类的构造函数使用基类的属性,同时基类中
没有无参构造函数时,必须使用:base()关键字,里面的参数列表
必须提供与基类构造函数中的参数列表中形参对其的实参
	抽象类本身性质决定它们必须作为基类使用
sealed关键字
	修饰词封闭类
	封闭类实例的虚拟成员函数调用转换为非虚拟调用
类的封装
	将数据的集合在一个单元中就是类
	被封装的对象通常称之为抽象数据类型
修饰符
	public	公共成员,完全公开,没有访问限制
	protected internal	在同一命名空间和继承类可以访问
	internal	在同一命名空间内可以访问
	protected	保护成员,在该类内部和继承类中可以访问,
实例不能访问
	private	私有成员,在类的内部才可以访问,类成员默认修饰符,
一般为了便于阅读会添加private
类的多态
	虚方法	使用关键字virtual 在派生类中使用override重写 方法覆盖
	抽象类与抽象方法	使用关键字abstract实现抽象
	接口实现
接口的实现和继承
	实现过程必须在实现接口的类中实现
	接口可以多重继承,多重继承时派生接口与基接口之间用冒号隔开
多个父接口之间使用逗号隔开
	父接口称为该接口的显示基接口
	不同的接口(不包含派生接口)之间允许使用同名成员
	同一接口中成员名不允许相同
	派生接口中如果要
隐式实现接口
	即可用于接口调用方法,也可用具体类调用方法
显示实现接口
	不能有修饰符public
	必须显式指定接口名称
	返回值类型 接口名称.接口方法
	只能被接口调用
抽象类与抽象方法
	关键字abstract
	修饰符 abstract class 类名
	{
		修饰符 abstract 返回值 方法名();
	}
	抽象方法不提供任何实际实现
	抽象方法必须在抽象类中声明
	不能使用static private virtual修饰符
	抽象方法不能有任何可执行程序,方法体(主体)也不行
	重写抽象方法是使用override
	如果派生类没有实现基类的所有抽象方法,则派生类也必须声明为抽象类
	如果一个非抽象类从抽象类中派生,则其必须通过重载来实现所有继承而来的抽象成员
密封类与密封方法
	关键字sealed
	密封类不能有派生类
	密封类不能包含虚方法virtual和抽象abstract方法
捕捉异常
	try catch 捕获异常
	try...finally 清除异常
	try...catch...finally 处理所有异常
try
{
	//可能异常的代码
}
catch(异常类 异常处理对象)
{
	//异常处理代码,输出异常信息
	对象.Message.ToString();
}

try
{
	//可能异常的代码
}
finally
{
	//用于消除try块中分配的任何资源以及运行任何即使在发生异常时也
必须执行的代码
}

try
{
	//可能异常的代码
}
catch(异常类 异常实例对象)
{
	//异常处理代码,输出异常信息
}
finally
{
	//用于消除try块中分配的任何资源以及运行任何即使在发生异常时也
必须执行的代码
}
引发异常
	throw 引发异常
	throw new 异常类(异常信息);
	异常类 预定义与自定义
	异常信息 字符串"格式转换错误"
预定义异常类
	Exception 所有异常对象的基类
	SystemException 运行时产生的所有错误的积累
	IndexOutOfRangeException 当一个数组的下标超出范围是运行时引发
	NullReferenceException 当一个空对象被引用时运行时引发
	ArgumentException 所有参数异常的基类
reference 引用
	InvalidCastException 类型的显式转换在运行失败时
	ArrayTypeMismatchException 当存储一个数组时,如果由于被存储元素的实际类型
与数组的实际类型不兼容而导致的存储失败
	ArithmeticException 算数运算期间异常发生的基类
	DivideByZeroException 试图除以零引发
	OverflowException 溢出时引发
	FormatException 参数格式无效时引发
自定义异常类
声明异常格式
	class 自定义的异常类名 : {}
引发异常格式
	throw (自定义的异常类名);
创建WinForm程序
	RAD(Rapid Application Development)
	控件 control 显示数据或接受数据输入的相对独立的用户界面(UI)元素
属性值
	BackColor 窗体背景颜色
	BackGroundImage 窗体背景图片
	Cursor 鼠标光标形状
	HelpButton 帮助按钮
	Icon 左上角图标
	MainMenuStrip 为主窗体指定主菜单条
	MaximumBox 最大化按钮
	MaximumSize 最大化尺寸
	MinimumBox 最小化按钮
	MinimumSize 最小化尺寸
窗口大小固化,可设置maximum==minimum
	Name 窗口的唯一标识名 在后台要获得前台的空间对象,需要使用Name
属性
	ShowIcon 显示图标
	ShowInTaskbas 显示在任务栏
	Size 尺寸
	StartPosition 启动位置
	Text 窗口的标题
	TopMost 最上层显示
设置窗体属性
	窗体唯一标识.属性名 = 属性值 本窗体中可以使用this代替标识
	属性面板
窗体的常用事件
	定义:即发生的事
	查看方法:窗体的所有事件都能在属性面板里查看
	注册事件:必须为对象注册事件才会被执行
	触发事件:注册后的事件必须触发才可发生
	默认最常用的事件
	事件的本质就是方法
	Click 单击事件
	DoubleClick 双击事件
	FormClosed 窗体关闭
	KeyDown 按下键瞬间
	KeyPress 键被按下键并释放键
	KeyUp 释放键瞬间
	Load 加载
	MouseClick 鼠标单击
	MouseDoubleClick 鼠标双击
	MouseDown 鼠标按下键
	MouseHover 鼠标悬停
	MouseMove 鼠标移动
	MouseUp 鼠标释放
窗体控件的添加
	窗体标识符.Controls.Add(控件标识符);
窗体控件的显示与隐藏
	窗体标识符.Show();
	窗体标识符.Hide();
MDI窗体
	多文档界面(multiple-document interface)
	用于同时显示多个文档
窗体中控件的基本操作
	控件.BringToFront();
	控件.SendToBack();
	控件.Location = new System.Drawing.Point(x, y); 控制控件显示
位置
文本控件
	label 标签控件
	Button 按钮控件
	TextBox 文本框控件
	RichTextBox 有格式文本控件
label控件
	System.Windows.Forms.Label类
	窗口.ClientSize,Width
	窗口.ClientSize.Height
Button控件
	System.Windows.Forms.Button类
	Click事件
	MouseEnter事件
	控件.Text
	控件.Image
TextBox控件
	AcceptsReturn 控制按下回车换行 false true
	CharacterCasing Upper大写 Lower小写 Normal正常
	MaxLength 最大字符长度 单位char
	Multiline 多行显示 True False
	PasswordChar 设置密文显示字符
	ReadOnly 只读模式 True False
	ScrolBars 滚动条 None Horizontal Vertical Both
	WordWrap 文字换行 True False
	Text 文本
RichTextBox控件
	控件.SelectionColor = Color.颜色;
	控件.SelectAll();
Timer控件
	Interval属性定义时间间隔 单位毫秒
	每隔一个时间间隔引发一个Tick事件
	主要方法为Start Stop 打开与关闭计时器
	DateTime.Now.ToString(); 获取当前时间并转化为字符串
	控件.Interval = 数值;
选择类控件
	CheckBox 复选框控件
	RadioButton 单选框控件
	ComboBox 下拉组合框控件
	ListBox 列表控件
	CheckBoxList 复选组控件
	NumericUpDown 数值选择控件
CheckBox控件
	System.Windows.Forms.CheckBox类
	控件.ThreeState false 两种状态 true 三种状态
	控件.Checked 复选框被选中
	控件.Unchecked 复选框没有被选中
	控件.Indeterminate 复选框为灰色,不可选状态
RadioButton控件
	System.Windows.Forms.RadioButton类
	Checked true 选中 false 未选中
文本控件.Clear(); 清楚text
文本控件.Focus(); 获取焦点
ComboBox控件
	下拉组合框控件
	System.Windows.Forms.ComboBox类
ListBox控件
	System.Windows.Forms.Listbox类
CheckedListBox控件
	System.Windows.Forms.CheckedListBox类
ComboBox控件ListBox控件CheckedListBox控件
	Items属性
	SelectedItem返回选择对象
	SelectedIndexChanged事件
ListBox控件CheckedListBox控件
	SelectionMode属性 设置单选多选 不可选
NumericUpDown控件
	System.Windows.Forms.NumericUpDown类
	将一个数按一定的值进行增加或减少
	Increment 单击时增加或减少的值
	Maximum	最大值
	Minimum 最小值
	Value 当前值
	控件.UpButton();
	控件.DownButton();
分组类控件
	Panel 面板控件
	GroupBox 分组框控件
	TabControl 选项卡控件
Panel控件
	System.Windows.Forms.Panel类
	将其他控件组合放入面板,便于管理
	AutoScroll属性 false true
	默认无边框
	BorderStyle属性 none无 FixedSingle Fixed3D
GroupBox控件
	System.Windows.Forms.GroupBox类
	为控件提供可识别的分组
	同一页面,实现多个单选RadioButton控件
TabControl控件
	System.Windows.Forms.TabControl类
	将组件组合到选项卡页面上
	Multiline属性 false 显示单选项卡 true 显示多选项卡
	Appearance属性 Normal 绘制常规选项卡 Buttons 绘制常规按钮 FlatButtons 绘制平滑按钮
	TabControl控件管理TabPages集合
	添加/删除TabPages集合
	TabPages的Text属性设置选项卡显示内容
	SelectedTab属性当前选项卡 选择先选项卡时触发SelectedIndexChanged事件 通过SelectedIndex属性和SelectedTab属性获取当前选择,进行特定处理
MenuStrip控件 和 ContextMenuStrip控件
MenuStrip控件
	System.Windows.Forms.MenuStrip类
	应用程序菜单结构的容器
	创建菜单时,给MenuStrip控件添加ToolStripMenu对象
ContextMenuStrip控件
	System.Windows.Forms.ContextMenuStrip类
	ToolStripMenu对象的容器
	响应Click事件
ToolStrip控件
	System.Windows.Forms.ToolStrip类
	创建自定义工具栏
	控件.AllowItemRecorder 允许项目记录器 false 禁止拖动工具栏卡片 true 允许拖动卡片
	控件.Dock 停靠在 top 顶部 left 左侧 right 右侧 fill 中间 bottom 底部 none 不停靠 可以被拖动
	控件.LayoutStyle HorizontalStackWithOverflow 水平 VerticalStackWithOverflow 垂直 Flow 流动 Table 表
	控件.GripStyle Visible 柄可见 Hidden 隐藏
	控件.Items 项目集合
	控件.ShowItemToolTips true 显示项目工具提示 false 不显示项目工具提示
StatusStrip控件
	System.Windows.Forms.StatusStrip类
	状态栏 显示状态信息
	ToolStripDropBownButton
	ToolStripProgressBar
	ToolStripSplitButton
	StatusStripStatusLabel 状态栏专用
PictureBox控件
	显示位图,图标,元文件,增强的元文件,JPEG,GIF文件的图形
	自动裁剪图像适应控件大小
ImageList控件
	存储图像控件,不能直接显示图像
	控件.ImageSize 设置图像大小
	Width Height 设置图像的宽和高 默认值16 取值范围1-256
	ColorDepth 设置颜色深度 取值4位-32位
	Draw 绘制图像
ListView控件
	Windows列表视图控件
	LargeIcon 在项文本旁显示大图标 控件过大 项显示在多列中
	SmallIcon 显示小图标
	List 显示小图标 显示在单列
	Details 多列中显示项
	Tile 每个项都是显示为一个完整大小的图标, 右边带项标签和子项信息
TreeView控件
	显示结点层次结构
	CheckBoxes
DateTimePicker控件
	从日期或时间列表中选择单个项
	默认显示日期
	显示时间 ShowUpDown true, Format Time
	Format Custom CustomFormat 格式字符串
	Year 返回年
	Month 返回月
	Date 返回日期部分
	Day 返回日
	DayOfWeek 返回星期
	Hour 返回小时
	Minitue 返回分钟
	Second 返回秒钟
	TimeOfDay 返回当天时间
	Millisecond 返回毫秒
格式字符串
	y Year缩写 yy或yyyy
	M Month缩写 m或mm
	d Date缩写 d或dd
	h hour缩写 h或hh 12小时制
	H Hour缩写 H或HH 24小时制
	m Minitue缩写 m或mm
	s Second缩写 s或ss
MonthCalendar控件
	查看和设置日期信息
	可视化网络图形界面
	BoldedDates 包含单个日期
	AnnuallyBoldedDates属性包含每年以粗体显示的日期
	MontblyBoldedDates属性包含每月以粗体显示的日期
	DateTime对象数组
	CalendarDimension属性 显示月份个数
	MaxDate属性 最大日期
	MinDate属性 最小日期
	BackColor 月份颜色
	ForeColor 月份文本颜色
	TitleBackColor 星期数的字体颜色及日历标题的背景色
	TitleForeColor 日历标题文本颜色
	TrailingForeColor 显示月份之前和月份之后的日期颜色
	ShowToday 是否在控件底部显示今天日期
	ShowTodayCircle 是否在今天日期上加圆圈
	ShowWeekNumbers 是否在每行日期的左侧显示周数
Errorprovider控件
	对窗体或控件上用户的输入进行验证
	DataSource 为数据集显示错误信息
	ContainerControl 
	Icon 设置自定义错误图标而不是默认图标
	SetError方法 指定错误信息字符串和错误图标应出现的位置
如果在代码中设置日期范围,则MaxDate属性和MinDate属性的值为DateTime对象
HelpProvider控件
	将HTML帮助文件(.btm文件或.chm文件)与Windows应用程序相关联.
	HelpNamespace属性 将帮助文件与HelpProvider组件相关联
	通过调用SetHelpNavigator并提供指定控件的HelpNavigator枚举值来
指定提供的帮助类型
	通过调用SetHelpKeyword方法为帮助提供关键字或主题
ProgressBar控件
	通过在水平条中显示相应数目的矩形来指示操作的进度
	Value 操作过程中完成的进度
	Step 指定Value属性递增的值
	Minimum 显示的最小值
	Maximum 显示的最大值
	Increment方法指定Value属性递增的值
	ProgressBar对象.Increment(进度值)
	PerformStep方法

你可能感兴趣的:(c#)