一.vb和vb.net部分
1.基础语法糖
- 特殊点:流程都带end、类型定义as加在后面
- 变量定义:
dim var as integer
-dim声明的字段默认为private、方法默认为public - 类权限:public、private、protected子类可访、friend程序集内部
- 流程:
if ... then ... end if
for i =x to y ... next
while ... end while
do while ... loop
select var case x ... end select
- 函数:
Public Sub/funtion xx() ... end sub/function
—byval x接形参,byref x接指针,as integer返回参数 - 类:
class Person ... end
,继承Person: animal
- 接口和模块:
interface/module loginservice
- 强转:y cbyte x、ubyte是无符号、sbyte是有符号
- 数据类型:decimal16字节128bit、date、object4-8字节、string、single(float)4字节、枚举enem
- 符号:不等于是<>、is和isnot是比地址、
- 日期对象:
date.format()
转字符串、Date.parse()
转成日期对象 - 数组:
a() as integer
- 窗体事件机制:
dim xxclick handles button1.click/load
。
2.控件
- 基础控件:label、xxbox、xxlist、xxview
- textbox:TextAlign对齐、Multiline接受多行、AcceptsReturn接受换行
- timmer:interval执行间隔
- Scrollbar、ProgressBar:Value、Maximum、Minimum设置当前值
- listview、treeview:CheckedItems、Items
- picturebox:Image、ErrorImage
- checkbox、optionbutton:Checked、AutoCheck、CheckAlign选择否
- listbox垂直列表:Items、SelectedItem已选项
- combobox(<select>):Items、SelectedItem已选项、DataSource、DisplayMember
- DateTimePicker:value设置日期值、
- 通用属性:name、text、caption标题、enable、width、visible、readonly、TabIndex按tab的顺序
- 通用方法:Focus()
- 对话框:showdialog()弹出,并返回一个枚举值:如yes、no
- commondialog是他们的基类
- colordialog颜色选择
- openfiledialog文件打开
- savefiledialog文件保存
- 提示框:MsgBox("不能输入空格")
3.高级窗体设置
- DataGridVIew:用来显示数据表格的
- datasource:设置数据源为datatable类型
- menustrip:菜单栏控件
- 使用:Dim mnuBar As New menustrip()
- 菜单选项:Dim mnuBar As NewToolStripMenuItem是选项可以添加到
- toolstrip:工具栏控件是一排图形工具栏
- form页面:编写事件的文件
- 关闭页面:Me.Dispose()
- 退出程序:System.Environment.Exit(0)
- 切换页面:xxage.Show()
4.字符串函数
- substring(开始,长度)
- indexof、lastindexof(谁,开始)
- replace(字符,字符)
- 字符串转整型:integer.int32()、convert.Toint32()、ctype()函数、cint()函数
二.c#与java的对比
1.类似的设计
- pe格式的dll、exe文件=class文件:(dll经过CLS,CTS第一次编译的中间文件,class是虚拟机的汇编,msil指pe文件的描述语言)
- clr=JVM :.net代码的运行时环境,前身是为com3提供加载代码服务
- JIT第二次编译=jvm解释
- 2020年,.net5宣布可以支持跨平台
- 基类库=bootstrap加载的包
- sealed=final:无法被继承、重写
- virtual=abstract:是接口方法
- const = final:定义常量
- 类型安全性:变量是安全的,即是自动提醒类型溢出和管理回收
- ":"= extend、implement:都能实现和继承
2.新的功能点
- 结构体:存在栈中-效率快但是资源限制大,只能有构造方法和属性。
- dynamic类型:能动态赋值不同类型值
- 数组和字符串的方法:tostring()和tochararray()能快速数组和字符串互转
- Datetime数据类型:now获取,parse()静态方法转字符串为对象
- 析构函数: object的finalize()方法
- getset块:快速定义属性的getset方法。
- Readonly类型:让类成员变量只能构造器赋值后无法修改。
- base关键字:和java一样会调用父类无参构造器,而base(paremeter)能指定调用构造器,等于super()。
- virtual和override:抽象类的抽象方法和子类的实现方法说明。
- is和as关键字:相当于
y ofinstence(x)
比较对象类型是否一致 - internal修饰符:只能单模块访问,不同包访问不了,类似于java的普通类型
3.事件机制
- delegate 关键字:声明代理指向某个方法。就像声明接口。
- 作用:可以作为某个方法的模板。
- 多播:nc += nc2,实现多方法串行执行。
- 事件:使用发布订阅模型。
- 发布器:在JavaScript中是封装的。
- 原理:定义系统先执行的本身触发事件方法,生成一些参数。
- 然后调用event,event是delegate方法的指针,它需要传递一些信息并触发订阅者方法。
- 订阅者:使用delegate声明相当于回调函数,
- 注意:event类型是delegate方法的指针。
- 使用:给回调函数添加订阅者们的方法。 事件发布则可以触发多个方法。
- 发布器:在JavaScript中是封装的。
三.windows桌面应用
1.Winfom项目结构
- 文件类型:.cs为C#源码文件
- 渲染文件:form.cs.design(为组件对象绑定属性、位置)、xaml
- 绑定事件文件:form.cs
- 配置文件:web.config
2.基础控件
- 通用属性:enable、anchor、dock绑定父容器边缘、size、setxx=true设置某属性开启状态、tabindex
- 容器控件:form
- tabcontrol:是标签页
- panel:分组
- groupbox:标题小容器
- tablelayoutpanel:是网格
- textbox:text/appendtext方法等multiline的多行输入password密码框
- richtextbox:undo撤销、
- 列表控件:节点/数据源/显示方法/样式
- listbox:只能是文字
- item属性是一个collection实例
- combobox:下拉菜单
- autocompletesource是数据源
- listview:可以带图标和其他信息
- treeview:可以做文件系统
- listbox:只能是文字
3.高级控件
- 对话框
- messagebox
- 按键值:messageboxbutton可以设置按键值
- 常用方法:show()显示并返回用户点击值
- openfile
- show():返回文件名列表
- messagebox
- form:
- 隐藏:this.Visible = false;
- 切换:xxform.Show();
- Datagridview:数据表
- cell是单元格对象,column是列行对象
- datasource:绑定datatable格式的数据
- 其他
- timer计时器:
- tick事件做定时
- imagelist:图片数据源
- timer计时器:
四. .net开发
.NET发展时间线
- 2000:.net 1.0推出asp.net
- 2006:.net2.0和3.0,Wcf、wpc
- 2009:asp.net mcv并且开源
- 2014:.net4.5并且继续开源
- 2016:.net core发布
- 2019:.net framework停止更新
- 2020:.net core正式命名为.net5.0
- 2021:.net6.0
- 2022:.net7.0
1.部署
- 安装包:可制定安装文件路径页面、协议页面、正在安装流程页面,
- 一键式:能发布到光盘、url上。需要客户端具备.net框架(同谷歌框架的概念),信任即可允许。
2.ado.net
- 最原始的con——查询statement——结果集resultset——用sql拼接作业务逻辑
- Datatable类型:是Datarow的对象列表
- add():添加行
- 遍历用dr[]下标
- dataset也是个简单的内存数据库
- tables切换数据库
- sqlconnection:是创建连接的-读取source文件或者手动设置参数或者构造器传入
- sqlcommand:text()指定sql,execu()执行、或者parameters.add(sqlparameter对象,即是传的参数)
- sqldatareader:是getstring(0)获取第几行
- sqdataadapter:fill封装到dataset里他是本地数据。
3.asp.net
- 模式:运行于iis服务器
- webpages模式:类似于传统php的编译模式,而且标签控件还要发请求绑定。
- Razor C#:@{ ... }
- webmvc模式:.cshtml后缀,
- Views 文件夹中包含每个控制器对应的一个文件夹url。
- webform模式:最经典的模式,代码耦合度减少,但仍需服务器渲染
<script runat="server">
- <% --%> 标签:代码是在服务器上执行的。
- html服务器控件:id 引用可用于操作运行时的服务器控件
- asp服务器控件:<asp:Button>
- 脚本事件:后端url与view同名,具体控制器必须自己case判断。
- 前端控制器:只能把pageOnload事件当控制转发
- webpages模式:类似于传统php的编译模式,而且标签控件还要发请求绑定。
- 依赖库:core、web包
- 前端控制器:
- .aspx:
- 执行流程:资源请求将会触发load事件—使用 Request对象取method属性值——执行相关业务逻辑——返回json
- ajax请求:.aspx是ajax请求的控制器,返回的是json,
- 跳转页面:使用location对象进行跳转。
- 不跳转:往location.href对象发。
- apix:
- .aspx:
4. .NET 6.0
200行代码,7个对象——让你了解ASP.NET Core框架的本质 - Artech - 博客园 (cnblogs.com)
- 新特性:跨平台、
- 性能:三倍
- 对比:
- 前端blazor:目前体验还不行,但效率高
- 优势:对标eletrcon的混合开发框架
- 组件库:ant、maui
- 后端:争议大,生态不好
- 大数据云原生:大厂偏好,但不行。
- 性能必要:小厂可尝试,但不改
- 前端blazor:目前体验还不行,但效率高
- 注解:
- 控制器:
- [ApiController]==@apirestcontroller
- [Route("api/[controller]/[action]")]==@resquestmapping
- [HttpGet({})]==@Get({})
- 控制器:
- 配置文件:
本文作者为byzhj,转载请注明。