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方法