自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(40)
  • 收藏
  • 关注

原创 c# 结构体(Struct)与枚举(Enum)与记录(Record)

c# 结构体(Struct)与枚举(Enum)与记录(Record)

2024-03-22 16:43:15 1056

原创 WPF Prism框架(导航)

导航拦截也要在接收的ViewModel类中继承IConfirmNavigationRequest接口,IConfirmNavigationRequest接口继承了INavigationAware接口。continuationCallback(bool)回调一个bool值,如果是true则允许进入下一个界面,false则被拦截.具体代码与WPF Prsim框架(区域)文章中提及相同,可详见WPF Prsim框架(区域)此篇文章.首先根据Prism(MVVM)中介绍的方法,引入Prism框架。

2023-07-31 19:53:17 772

原创 WPF Prism框架(模块化)

模块化开发是程序开发的一种方式,他将程序分为一组松散耦合的功能单元(命名模块),可集成到更大的应用程序中。模块封装了应用程序整体功能的一部分,通常代表一组相关功能。它可以包括一系列相关组件,如应用程序功能(包括用户界面和业务逻辑)或应用程序基础架构(如用于记录或验证用户的应用程序级服务)。模块是相互独立的,但可以松散地相互通信。使用模块化应用程序设计,您可以更轻松地开发、测试、部署和维护应用程序。例如,考虑个人银行申请。

2023-07-31 17:33:28 798

原创 WPF Prsim框架(区域)

WPF Prsim框架 区域 控制反转 依赖注入

2023-07-29 17:24:00 192

原创 WPF Prism框架(MVVM)

Modules:Modules是能够独立开发、测试、部署的功能单元,Modules可以被设计成实现特定业务逻辑的模块(如Profile Management),也可以被设计成实现通用基础设施或服务的模块(如Logging、Exception Management)。ModuleCatalog:在Prism中,Module Catalog指明了要Load哪些Module,和用什么样的顺序去Load这些Module。

2023-07-29 15:47:29 808

原创 WPF之绑定

类似这种赋值操作, 我们之所以不称之为绑定, 主要原因是因为他们大多数操作都是一次性的, 无论是数据还是按钮本身发生变化,对两者而言都是不可见的。而绑定的概念则侧重于: 两者的关联,协议与两者之间的影响。首先, 从一个简单的例子来理解什么是绑定。在winform中, 我们常规的做法会给滑块创建一个值改变事件,同时将滑块的值赋值给文本。那么该如何理解整句话的意义, 翻译: 静态文本TextBlock的Text属性将通过绑定的方式关联到元素名'slider'的value属性上。

2023-07-29 14:53:31 343

原创 WPF之触发器

目录触发器介绍TriggerControlTemplate.Triggers 触发器ControlTemplate.EventTrigger 事件触发器顾名思义, 触发器可以理解为, 当达到了触发的条件, 那么就执行预期内的响应, 可以是样式、数据变化、动画等。触发器通过 Style.Triggers集合连接到样式中, 每个样式都可以有任意多个触发器, 并且每个触发器都是 System.Windows.TriggerBase的派生类实例, 以下是触发器的类型。

2023-07-29 14:39:29 2191

原创 WPF之样式

WPF样式有三种定义方式:样式应用的优先级为:标签内样式(最高) > Windows/UserControl/Page > Application.xaml(最低)

2023-07-29 14:21:24 286

原创 c#基础之WPF

使开发人员可以完全在 Windows Presentation Foundation引擎的基础上创建自己的控件,也可以通过对现有 Windows Presentation Foundation 控件进行再分类来创建自己的控件。Windows Presentation Foundation 框架的核心是用于形状、文档、图像、视频、动画、三维以及用于放置控件和内容的面板的一系列控件。StackPanel主要用于垂直或水平排列元素、在容器的可用尺寸内放置有限个元素,元素的。而创建的一种新的描述性语言。

2023-07-28 19:57:18 869

转载 C#中is与as的区别分析

1、(int)转换:用在数值范围大的类型转换成数值范围小的类型时使用,但是如果被转换的数值大于或者小于数值范围,则得到一个错误的结果,利用这种转换方式不能将string转换成int,会报错。检查一个对象是否兼容于其他指定的类型,并返回一个Bool值,如果一个对象是某个类型或是其父类型的话就返回为true,否则的话就会返回为false。2、AS是引用类型类型的转换或者装箱转换,不能用与值类型的转换。4、用as来进行类型转换的时候,所要转换的对象类型必须是目标类型或者转换目标类型的派生类型。

2023-07-12 10:16:01 827

原创 正则表达式

正则表达式,又称规则表达式(Regular Expression,在代码中常简写为regex、regexp或RE),是一种文本模式,包括普通字符(例如,a 到 z 之间的字母)和特殊字符(称为"元字符"),是计算机科学的一个概念。正则表达式使用单个字符串来描述、匹配一系列匹配某个句法规则的字符串,通常被用来检索、替换那些符合某个模式(规则)的文本。许多程序设计语言都支持利用正则表达式进行字符串操作。例如,在Perl中就内建了一个功能强大的正则表达式引擎。正则表达式这个概念最初是由Unix。

2023-07-06 20:04:59 51

原创 c# string 与stringbuilder对比

StringBuilder类是可变类,每次操作都是对自身对象进行操作,而不是生成新的对象,所占空间会根据内容的增加而扩充,因此,在做大量的修改操作时,不会因生成大量匿名对象而影响系统性能。例如实例化一个字符串string str="my",str对象的内存地址指向了堆里面的my,当使用str+="name"时,并不是改变my的值,而是在堆中分配了一段新的内存空间"myname“并引用给str,本质是创建了一个新的字符串赋值给了str。:引用分配栈内存,引用类型本身的数据存储在堆中;:在函数中创建,栈内存;

2023-07-06 14:58:10 134

原创 c#反射(Reflection)

反射指程序可以访问、检测和修改它本身状态或行为的一种能力。程序集包含模块,而模块包含类型,类型又包含成员。反射则提供了封装程序集、模块和类型的对象。您可以使用反射动态地创建类型的实例,将类型绑定到现有对象,或从现有对象中获取类型。然后,可以调用类型的方法或访问其字段和属性。

2023-07-06 09:57:49 77

原创 c#同步\异步

先打印111,在打印333,最后打印222;打印333与222的线程相同。先打印111,在打印333,最后打印222打印333与222的线程相同。先打印111,在打印333,最后打印222;异步编程时,返回值是task泛型里面的类型。先打印111,等待3秒后打印222。使用异步时,task不是返回值。线程间互相等待会造成死锁问题。任务执行结束,接收返回值。

2023-07-05 19:42:56 48

原创 c#项目属性\信息设置

【代码】c#项目属性\信息设置。

2023-07-05 16:18:33 109

原创 c#INI文件

ini 文件是Initialization File的缩写,即初始化文件,是windows的系统配置文件所采用的存储格式,统管windows的各项配置,一般用户就用windows提供的各项图形化管理界面就可实现相同的配置了。但在某些情况,还是要直接编辑ini才方便,一般只有很熟悉windows才能去直接编辑。

2023-07-05 15:58:41 403

原创 c# .net core WEB Api拦截器

在program中添加此行代码,会处理前后端数据交互出现乱码的情况。登录拦截器 继承ActionFilterAttribute。接口连接前拦截 重写(OnActionExecuting)接口连接后拦截 重写(OnActionExecuted)在program中添加此行代码,会拦截所有接口。分为在请求接口前拦截与请求接口后拦截。放在方法的前面只对这一个方法生效。放在类的前面,对整个类生效。

2023-07-05 14:45:16 1670

原创 c# WebApi 数据库连接(EF框架)

在VS中视图选择程序包管理器控制台,输入命令:(Scaffold-DbContext -Force “Server=.;Database=…Password=…” Microsoft.EntityFrameworkCore.SqlServer -OutputDir Models -Context WebApiContext)(将等号后面的值换作自己的数据库信息值)命令执行完成后,EF框架会自动生成与数据表相对应的实体类.

2023-07-05 14:18:27 1089

原创 c#之UDP协议

Internet 协议集支持一个无连接的传输协议,该协议称为用户数据报协议(UDP,User Datagram Protocol)。在发送端,UDP 传送数据的速度仅仅受应用程序生成数据的速度、计算机的能力和传输带宽的限制;无连接的是 UDP,它除了给应用程序发送数据包功能并允许它们在所需的层次上架构自己的协议之外,几乎没有做什么特别的事情。面向连接的是 TCP,该协议几乎做了所有的事情。2,传输数据不需要维护连接状态,包括收发状态等,这样一台服务器可同时向多个客户端传输相同的数据,如实现多播。

2023-07-05 11:48:52 1553

原创 c#接口(会员卡:增删查改)

【代码】c#接口(会员卡:增删查改)

2023-06-20 17:23:24 51

原创 c#之TCP协议

连接到不同但互连的计算机通信网络的主计算机中的成对进程之间依靠TCP提供可靠的通信服务。TCP假设它可以从较低级别的协议获得简单的,可能不可靠的数据报服务。Protocol)是一种面向连接的、可靠的、基于字节流的传输层通信协议,由IETF的RFC 793定义。原则上,TCP应该能够在从硬线连接到分组交换或电路交换网络的各种通信系统之上操作。1,TCP协议传输控制协议(TCP,Transmission Control。具有有序的,安全,可靠的,不容易丢包,延时性高等特点。tcp : 用于聊天,传输文件。

2023-05-18 19:28:48 5049

原创 数据库基础进阶

create function user_add(@id int) --create function 方法名(变量)if 判断 else if ,else 判断里的内容以begin开始,end结束,begin相当于代码里面的{,end相当于}create trigger add_one_log_t --创建一个触发器 触发器名称是add_one_log_t。exec 创建存储过程的名称 变量 exec add_one_log('李四','参数','参数')

2023-05-08 23:19:00 95

原创 数据库查询

select *,(select t_name from base_role where id=a.role_id) as 角色名 from base_user as a。例:select * from base_user where t_city not in ('成都','上海')例如:select from base_user where t_status in ('1','2')1,select charindex('de','abcdefg') //查询字符出现的位置,下标从1开始。

2023-05-06 18:04:58 72

原创 数据库基础

id int(10) not null identity(1,1) primary key, //id为主键,以1为首每次自增1, 不为空。insert into 表名 (列名,列名...) values( 数据,数据,...) --数据必须与列名一一对应。select 列名 as 别名 from 表名 //查询数据表中列名下的数据,显示时列名以别名显示。select 列名,... from 表名 //查询数据表中列名下的数据。

2023-05-06 14:35:54 46

原创 c#i\o接口

driveinfo.driveformat盘符格式.path.combine(path)合并多个路径,path.join合并多个路径,combine是指路径的合并,join是指字符串的拼接.ispathrooted(path)指示文件路径包含根返回布尔值.hasextension(path)路径返回布尔值(重要)Directory类和Directoryinfo'类专门用来操作目录(文件夹)信息,区别是directory类是静态类。directory.move()移动目录不能跨盘符,切移动目录必须存在.

2023-04-12 21:45:28 70

原创 c#stringbuilder类

2.修改字符串的值,也会重新分配空间,新创建的了字符串,在内存中重新分配了空间.重新赋值之后,原来的字符已经废弃,但还是占着内存空间,需要使用gc垃圾回收器,让gc回收不再使用变量.stringbuilder表示[可变字符字符串]类型,其中的字符可以被改变,增加,删减,替换,当向一个已满的stringbuilder添加字符时,其会自动申请内存进行扩容.stringbuilder.append()添加;1.把一个空字符赋值给另外一个字符串,会重新分配内存,新创建的字符串,在内存中重新分配了空间.

2023-04-12 21:13:12 173

原创 c#接口(Interface)

接口通过关键字Interface,接口的名称一般约定以I,为了开发者阅读代码方便.接口必须等待其他类来实现(继承),结构也可以继承接口(不常用).接口能继承其他的接口,必须要靠一个类来实现.接口支持多继承,类只能有一个父类却能够拥有多个接口,接口支持多继承.接口去继承接口可以认为是把父接口中的方法克隆了一份放到了本接口.实现一个接口必须要实现接口中所有(没有实现的)方法.接口中已经有实现的方法,不能继承.显示实现会标注方法来源于哪个接口.接口中可以存在静态方法与虚方法,但是不建议定义。

2023-04-04 20:20:22 215

原创 c#中的类

抽象类:高度概括,优先规划,抽离共性.并不是为了实例化个体.主要是用来等着其他类来继承.没有类来继承抽象类无意义.抽象类是不能实例化的.所以无法通过实例的方法来方法抽象类的方法与属性,也无法通过抽象类来访问抽象类中的属性与方法.所以建议不要再抽象类中定义实例成员,如果一个抽象类中有实例成员,我们称这个类没有完全抽象.如果一个类只有抽象成员我们称它为完全抽象.3.在密封类中不能包含虚成员,因为虚成员只能在派生类中被重写.,密封方法在密封类中.密封方法不能在其他类中再次被重写.密封类没有子类不能被继承.

2023-04-04 16:11:53 216

原创 c#类的继承,重载,多态,重写与隐藏

子类会默认把父类中的所有方法继承过来,如果不想要那个方法可以隐藏,重新在子类中创建新的同名方法,方法隐藏使用new关键字,隐藏与重写达到的目的是一样的,都是修改父类的方法,但是意义不一样,隐藏是先把继承过来的隐藏掉,在创建,而重写是修改父类中的虚方法.子类可以隐藏父类的虚方法也可以隐藏父类中的普通方法.函数的定义必须彼此不同,可以是参数列表中的参数类型不同,也可以是参数个数不同。当创建一个类时,程序员不需要完全重新编写新的数据成员和成员函数,只需要设计一个新的类,继承了已有的类的成员即可。

2023-04-03 21:20:23 487

原创 c#委托与事件

事件:事件是指用户的操作,如点击,双击等,或者是一些信息,如:通知.事件的发生时,需要执行一些业务逻辑(方法).事件应用时:事件声明,事件声明时,把事件类型设置为委托,调用(触发)事件.会使用设计模式:发布-订阅模式 .发布相当于报社,订阅相当于客户,客户订阅时,报社还可能没有生产.委托:委托是类似c/c++中的指针,在c#中应用最广泛的场景:控件事件的绑定,事件的类型是一个委托,事件有滞后性,肯定有一个明确的执行时机,并不是绑定事件后就能执行.委托不能直接调用.实例化一个委托让委托对应的方法的应用.

2023-04-03 20:37:47 363

原创 静态常量与动态常量

静态常量不属于实例,它的访问必须通过类的本身.静态常量本质上是静态的成员,但是不需要static来修饰.静态函数的数据类型有所限制.只能在初始化器初始化.不能在构造函数初始化。此处的readonly是让类的地址可读,不能被修改,但是属性值是可以修改的.动态常量只能在初始化器与构造函数中初始化,其他位置不能被修改.readonly关键字标识的是动态常量,,关键字既可以在修饰符前也可以 在修饰符后面.动态常量的数据类型无限制,1.在运行期间,才进行初始化,也可以不初始化,初始化可以放在构造函数中.,分配内存.

2023-03-25 14:20:02 100

原创 c#类(静态类)

构造函数一般只有在实例化(new xxx())的情况下调用.而静态类是不能实例化的,静态构造函数应用场景可以对字段\属性进行初始化.一般在静态函数中不建议定义静态构造函数.静态构造函数执行的时机,第一次调用静态类的时候就会进入.不再是new的时候.静态方法与静态属性不能通过this来访问.this是类实例的别名.静态方法中只能访问静态成员。1.不能支持实例化,原因是静态类只有一个"副本",说明静态类分配空间时只有一份.来标识一个类是静态类。3..静态类中的构造函数必须是静态的,且不能有修饰符.

2023-03-25 09:46:33 3177

原创 c#中类-方法

10,20称为方法的实际参数,简称实参,实参传递到形参是有需求的:1.数据类型必须匹配,2.实参的顺序要和形参的顺序保持一致.如果开发者传递实参时没有和形参的顺序保持一致,又想让代码执行成功,需要借助命名参数,即给实参起个别名,实例别名就是形参的名字,命名参数可以让开发者给实参传递到指定的位置.2.当代码遇见开发者封装的方法时,会进入方法体执行,执行方法体业务逻辑后,在返回调用方法处.如果代码遇见的不是开发者封装的方法,这时候并不会进入方法体,原因是类库提供的方法源码是隐藏的.

2023-03-23 17:47:03 28

原创 c#函数(方法)

值传递特点:方法中修改了形参,不会影响外部的实参.引用传递:方法中修改了实参,影响外部的实参.实参的类型是引用类型中的string类型,传递特点与值传递一致,这是由于string类型在c#中特殊,重新修改了string后会生成新的字符,重新分配内存.方法传递类的实例时,是引用传递.修改实例的属性并没有给实例分配新的内存.通过类本身来调用的函数称为静态函数,通过类的实例来调用的方法称为实例方法,c#中方法必须要在类中定义,方法默认是私有的,只能在类中使用..封装成方法,调用方法,使用方法,根本目的,复用。

2023-03-23 10:06:05 246

原创 c#循环语句

【代码】c#循环语句。

2023-03-17 15:11:35 68

原创 c#运算符

【代码】c#运算符。

2023-03-17 15:04:51 25

原创 c#类型转换

强制转换又称显示转换,将一个大范围的数据类型转化为一个小精度的数据类型,或把一个对象类型转化为另一个对象类型,强制转换成功时不报异常,转换不成功,会报异常.强制转换的语法:数据类型的变量名 =(数据类型) 变量名或值;int.Parse()把字符串转化为数字,int.tryParse()尝试把字符串转化为数字;隐式转换:将一个小范围的数据类型转换为较大范围的数据类型,编译器会自动完成类型的隐式转换.隐式转换的实际就是从低精度的数值类型转化为高精度的数值类型的转换.类型转换分为两种:隐式转换与强制转换。

2023-03-17 15:00:38 101

原创 C#字符串

定义字符串: String strl ="hello";所有和字符串相关的操作都在system string类中, string strl ="你好";string是String的语法糖, 单引号只能包裹单个字符.$"{strl},{strl}"模板字符串写法.字符串不能直接换行,要想换行要使用邮箱符,写法:string strl = @"第一行字符串 第二行字符串 第三行字符串"比较值类型时,优先比较值;在比较字符串类型时优先比较值,没有比较地址;在比较饮用类型时,优先比较的的是地址,但字符串除外.

2023-03-15 20:23:49 902

原创 c#数据类型

变量类型 变量名称(命名规则:只能包含数字,字母,下划线,@符号,但数字不能开头.$不能是c#的关键字如:if for int class)Console.WriteLine("你输入的姓名:{0},你输入的年龄:{1}", myName, myAge);Console.WriteLine($"你输入的姓名:{myName},你输入的年龄:{myAge}");变量:值是可以变化的, 变量只定义,不初始化会报错;object,类, string ,数组,list。数据类型: 值类型,引用类型,指针类型。

2023-03-13 21:21:58 41

原创 c#入门学习

第一次编译:msil微软中间语言,VS2022中有c#编译器,把源码生成MSIL(即bin/Debug/net6.0下的.dll或者.exe);类默认有一个无参的构造函数且构造函数必须与类同名.用类去生成一个个个体时,调用的函数叫构造函数,构造函数属于类的方法成员.命名空间通过namespace关键字来定义,一般使用大驼峰来命名.唯一的不重复,且规律一般是域名的反转.命名空间可以嵌套。命名空间的好处:1.解决命名冲突 2. 方便查找类,方便代码维护。对象:也叫实例,是类经过"实例化"后得到的内存中的实体。

2023-03-13 17:47:32 124

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除