vb.net和c#知识整理

byzhj 743 0
温馨提示

本篇为windows开发的第一篇,主要从简单Winform开始学起

一.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方法的指针。
      • 使用:给回调函数添加订阅者们的方法。 事件发布则可以触发多个方法。

 


三.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:可以做文件系统

 


3.高级控件

 

  • 对话框
    • messagebox
      • 按键值:messageboxbutton可以设置按键值
      • 常用方法:show()显示并返回用户点击值
    • openfile
      • show():返回文件名列表

 

  • form:
    • 隐藏:this.Visible = false;
    • 切换:xxform.Show();

 

  • Datagridview:数据表
    • cell是单元格对象,column是列行对象
    • datasource:绑定datatable格式的数据

 

  • 其他
    • timer计时器
      • tick事件做定时
    • imagelist:图片数据源

 


 

 

四. .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事件当控制转发

 

  • 依赖库:core、web包

 

  • 前端控制器:
    • .aspx:
      • 执行流程:资源请求将会触发load事件—使用 Request对象取method属性值——执行相关业务逻辑——返回json
    • ajax请求:.aspx是ajax请求的控制器,返回的是json,
      • 跳转页面:使用location对象进行跳转。
      • 不跳转:往location.href对象发。
    • apix:

 

4. .NET 6.0

200行代码,7个对象——让你了解ASP.NET Core框架的本质 - Artech - 博客园 (cnblogs.com)

  • 新特性:跨平台、
    • 性能:三倍

 

  • 对比:
    • 前端blazor:目前体验还不行,但效率高
      • 优势:对标eletrcon的混合开发框架
      • 组件库:ant、maui
    • 后端:争议大,生态不好
      • 大数据云原生:大厂偏好,但不行。
      • 性能必要:小厂可尝试,但不改

 

  • 注解:
    • 控制器:
      • [ApiController]==@apirestcontroller
      • [Route("api/[controller]/[action]")]==@resquestmapping
      • [HttpGet({})]==@Get({})

 

  • 配置文件:

 

发表评论 取消回复
表情 图片 链接 代码

分享