![](https://img-blog.csdnimg.cn/20201014180756930.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
C#.NET
文章平均质量分 62
Maybe_ch
从0开始
展开
-
.NET Flee 字符串表达式动态解析,怎么性能优化!!
Flee (支持 Net6.0, Net5.0, Netstandard2.1, Netstandard2.0)动态解析的框架是有几个的,个人先使用了DynamicExpresso,但是需求中是需要支持IF/ELSE的,DynamicExpresso中支持三目运算,可以代替IF/ELSE,需要对字符串表达式进行IF/ELSE到三目运算的转换才能使用,之后发现了Flee直接支持。DynamicExpresso和Flee相比较,个人感觉Flee的性能更好,支持的功能也比较多。原创 2022-09-08 16:02:17 · 881 阅读 · 1 评论 -
【c#】泛型
1.泛型:宽泛的——不确定的; 型:类型——不确定的类型2.调用普通方法的时候,参数类型在声明时就确定了,调用按照类型传递参数即可3.如果可以通过参数推导出来则可以省略尖括号1.泛型方法:在一个方法名称后面多了一个尖括号,尖括号中有占位符2.延迟声明:声明的时候,只是给一个占位符T T是什么类型?你调用的时候是什么,你说什么就是什么3.占位符 T-类型参数——类型变量4.类型参数当做方法的参数的时候,明确参数类型泛型不是语法糖泛型是由框架升级支持的,使用时CLR需要支持泛型1.泛型方法——可以一原创 2022-06-14 00:19:29 · 2402 阅读 · 0 评论 -
OpenCVSharp学习笔记(二)显示窗口和加载图片保存图片
1原创 2021-10-24 23:41:44 · 2487 阅读 · 0 评论 -
【c#】Func委托、Action委托
简单使用Func委托是官方提供的类库委托,可以减少我们每次自己声明委托的麻烦,下面是一个Func委托的声明,我们来看下他的使用public delegate TResult Func<in T1, in T2, out TResult>(T1 arg1, T2 arg2);public delegate TResult Func<in T1, in T2, in T3,out TResult>(T1 arg1, T2 arg2);public delegate TResult原创 2021-09-23 23:31:33 · 876 阅读 · 0 评论 -
.net静态代码块执行时机
直接上代码 public class Test { private string no; public static string msg; static Test() { Console.WriteLine("执行静态代码块"); msg = "静态代码块"; ...原创 2019-10-29 18:23:08 · 497 阅读 · 0 评论 -
C# MVC URL特殊匹配规则
*匹配*用来匹配URL剩余部分 routes.MapRoute( name: "Test9", url: "{controller}/{action}/{operation}/{*plus}", defaults: new { controller = "Work", action = "Inde...原创 2019-10-04 23:20:55 · 320 阅读 · 0 评论 -
c# MVC路由匹配总结
关于{controller}/{action}在MVC系统中,{controller}/{action}必不可少,如果缺少会出现找不到路径的错误约定规则:这个占位符是MVC里面约定的,并且会被解析成控制器和对应的方法位置灵活:这个两个约定的占位符在任意位置其他占位符仅仅是占位:比如{aa}/{bb},这里的aa不能被解析成控制器,bb不能被解析成动作方法默认要求:一个路由中,如果...原创 2019-10-04 18:08:41 · 986 阅读 · 0 评论 -
.net EF 新手教程
最近学习了.net 的EF框架,在这里自己总结一下用会的几种操作。No.1 准备工作首先先放上数据库的表结构,便于后面的示例操作。下来我们在项目中添加ADO.NET实体数据模型模型的内容根据大家的需要进行选择,我在这里选择来自数据库的EF设计器,这样他会帮我自动生成数据库中的EF设计器。因为我之前创建过这里会显示我之前的连接, 大家可以在这里选择新建连接因为我使用的 SQL S...原创 2019-10-28 14:38:26 · 5831 阅读 · 0 评论 -
C#线程同步ReaderWriterLockSlim
ReaderWriterLockSlim可以将读锁和写锁进行分离,读锁允许多线程读取数据,写锁在被释放前会阻塞了其他线程的所有操作。下面以一个读Dictionary数据作为示例 static ReaderWriterLockSlim _rw = new ReaderWriterLockSlim(); static Dictionary<int, int> _items...原创 2018-12-10 11:22:17 · 384 阅读 · 0 评论 -
数据动态视图DataView
DataView之前我们说了DataSet在DataSet里面存的是DataTable,而DataTable里面存的就是DataView类似于数据库中的视图提供基础DataTable中数据的动态视图完全脱离数据源进行数据筛选属性名称说明Table用于获取或设置源DataTableSort获取或设置DataView的一个或多个排序列以及排序顺序Ro...原创 2018-12-21 23:56:55 · 935 阅读 · 0 评论 -
DataReader和DataAdapter的比较
DataReader1.使用DataReader需要对集合(list)配合使用,封装较为麻烦2.但对集合作为数据源能够体现更好的面向对象特性DataAdapter1.与DataSet配合使用,后台无需单独封装,编写非常简单。2.但不能更好的体现面向对象编程特性两者如何选择?1.开发角度:如果进行并行开发(负责不同层的开发),最好选择DataReader封装方法2.数据筛选:如何前台...原创 2018-12-23 15:05:13 · 1076 阅读 · 0 评论 -
C#获取系统时间年月日星期时分秒
获取当前时间的时分秒DateTime.Now.ToString("yyyy年MM月dd日");Week.Text = DateTime.Now.ToString("dddd");?/星期DateTime.Now.ToString("HH");//时DateTime.Now.ToString("mm");//分DateTime.Now.ToString("ss");//秒...原创 2019-01-14 16:08:29 · 1813 阅读 · 0 评论 -
c# 两个List合并
直接上代码了,有两种合并的方式,一种是去重的合并,另一种是不去重的合并。 static void Main(string[] args) { List<int> listA = new List<int> { 1, 4, 8, 9, 7, 8, 3 }; List<int> listB = new...原创 2019-01-16 10:32:41 · 7313 阅读 · 0 评论 -
c#跨线程访问控件
Demo效果还是使用demo的形式来说下如何访问控件,先看下我们想要的效果实现思路任务1和任务2采用两个线程,将每次运算结果显示在lable中,我们先按自己的思路写下看能不能实现。private void button1_Click(object sender, EventArgs e) { int a = 0; Threa...原创 2019-04-23 11:31:23 · 423 阅读 · 0 评论 -
DataSet使用
通过使用DataSet可以省去我们使用list接收数据后的封装过程,DataSet中所存的是DataTable。下面写一个使用DataSet取得数据的通用数据访问类。 public static DataSet GetDataSet(string sql) { SqlConnection conn = new SqlConnection(connStr...原创 2018-12-19 23:35:18 · 905 阅读 · 0 评论 -
C#线程同步Barrier
Barrier中提供了一个回调函数,每个线程调用SignalAndWait方法后该回调函数会被执行。eg:static Barrier _barrier = new Barrier(3, b => Console.WriteLine("1"));在上面我们初始化了一个Barrier,并在构造中设置为将等待的信号数量为3,这就意味着如何想好执行回调函数Console.WriteLine...原创 2018-12-06 17:20:43 · 759 阅读 · 0 评论 -
C#线程同步CountdownEvent
CountdownEvent用于在完成指定的几个操作后悔发出信号。下面通过代码来说下CountdownEvent。static CountdownEvent _countdown = new CountdownEvent(2); static void PerformOperation(string message,int seconds) { ...原创 2018-12-06 15:16:17 · 522 阅读 · 0 评论 -
C#线程同步AutoResetEvent
AutoResetEvent一般用来从一个线程向另一个线程发送通知。下面我用两个线程来使用下AutoResetEvent private static AutoResetEvent _workerEvent = new AutoResetEvent(false); static void Process(int seconds) { ...原创 2018-12-06 14:49:06 · 385 阅读 · 0 评论 -
c#并发semaphoreslim
该类限制了用时访问同一资源的线程数量,下面写一段代码来讲解他的用法 class Program { static SemaphoreSlim _semaphore = new SemaphoreSlim(4); static void acquireSemaphore(string name, int seconds) { ...原创 2018-12-05 09:30:57 · 5222 阅读 · 0 评论 -
c#前台线程和后台线程
前台线程:在主线程运行结束后,若前台线程没有运行完则会阻止主线程的关闭后台线程:在主线程运行结束后,整个线程会结束 class ThreadSample { private readonly int _iterations; public ThreadSample(int iterations) { ...原创 2018-11-29 18:04:22 · 16014 阅读 · 0 评论 -
remoting项目运用
上次写了remoting 的简单运用,在项目中我们服务端与客户端肯定不会去直接调用一个类,一般都是通过接口。下面我将自己项目里的一部分代码截取出来,进行讲解首先编写接口编写接口namespace YTKJ.Security.Interface{ public interface IMachineControlService { void OpenDoor(st...原创 2018-10-25 10:49:14 · 8259 阅读 · 0 评论 -
日志框架NLog简单配置使用
NLog日志管理工具一、获得NLog这里介绍最简单的获得方式1.管理NuGet程序包2.在打开页面中搜索NLog并进行安装,安装NLog和NLog.Config3.安装成功后我们可以看到如图中的文件及引用二、配置NLog.config&lt;?xml version="1.0" encoding="utf-8" ?&gt;&lt;nlog xmlns=&quo原创 2018-10-10 11:00:36 · 75837 阅读 · 0 评论 -
C#LINQ查询子句
查询表达式用查询语法表示的表达式,由一组类似于SQL的语法编写的句子组成LINQ查询表达式必须以from子句开头,并且必须以select或group子句结束,中间可以添加多个子句from子句from子句指定的数据源类型必须为IEnumerable、Ienumerable或者两者的派生类型int[] nums = {1,7,6,5,8,4,1,2,11,23};var list = fr...原创 2019-02-22 18:32:08 · 537 阅读 · 0 评论 -
c# LINQ查询方法(1)
LINQ是什么?Language Integrated Query 语言集成查询可以使得查询操作通过编程语言自身来表示,而不是嵌入字符串SQL语句。LINQ主要部分LINQ to Objects 主要负责对象的查询LINQ to XML 主要负责XML的查询LINQ to ADO.NET 主要负责数据库的查询LINQ查询方法1.获取数据Select();Select()方法在时候...原创 2019-02-18 15:45:29 · 893 阅读 · 0 评论 -
var使用注意的问题
var只能定义局部变量,而不能定义成员变量定义的时候必须同时完成初始化,而不能使用var定义变量为nullvar本身不是一个新类型,只是用来修饰一个可以推断出具体类型的局部变量var根据之后的变量进行类型的推断,一旦声明后类型不可再次改变...原创 2019-02-13 15:20:47 · 1200 阅读 · 1 评论 -
MVC 路由生成URL Url.Action&Html.ActionLink
在项目中URL可能会发生改变,如果我们直接指定固定的URL,在后期如果改变会比较麻烦,今天我介绍学习到的两种方法Url.Action我们从官方的注释中可以看到每个参数应该传什么样的值,下来我们来使用这个方法,看看生成的URL是什么,下面的是在页面中的代码 <a href="@Url.Action("GetURL", "URL", new { id = 1001})">ac...原创 2019-10-05 22:52:38 · 790 阅读 · 2 评论 -
ASP.NET MVC解决方案目录结构
MVC项目文件夹说明App_Data:用来保存数据文件App_Start:包含ASP.NET-MVC系统启动的相关类文件Controllers:存放整个项目“控制器”的代码文件Models:存放整个项目的“模型”代码文件Views:存放整个项目的“视图”代码文件文件说明:Views下面的Web.config文件:作用于视图的配置文件Global.asax文件:全局应用程序文件...原创 2019-09-01 17:43:10 · 823 阅读 · 0 评论 -
c#获取打印机状态
在项目中遇到需要获取到打印机状态,可以通过下面的方式获得,PrintQueueStatus是一个枚举,我在下面只取了其中的几个值,可以根据你的需要获取状态using System.Printing; public static void GetPrintStatus() { PrintQueue pq = LocalPrintServer.GetDef...原创 2019-06-26 15:49:28 · 5050 阅读 · 3 评论 -
ASP.NET Cookie
保存Cookie以保存username 和userPhone为例子 //保存Cookie 方法一 Response.Cookies["username"].Expires = DateTime.Now.AddDays(1.0); Response.Cookies["username"].Value = this.txtCoo...原创 2019-06-16 23:38:01 · 148 阅读 · 0 评论 -
WebForm-页面回发机制
首次加载:在首次进入页面时会触发Page_Load方法。回发机制:当用户操作例如让表单产生submit时产生回发,服务器会再次加载当前网页执行Page_Load方法。Load事件:不论是首次加载还是回发都会触发该事件在我们需要对页面进行初始化的时候往往会写在页面加载Page_Load事件中,但是因为每次刷新页面多会触发这个事件中的方法,所以我们需要在方法中判断是回发还是首次加载,如果是首次加...原创 2019-06-16 22:03:04 · 1125 阅读 · 0 评论 -
C#中backgroundworker的使用
通过一个demo来说一下backgroundworker的使用上图使我们最终需要实现的效果,下来我们开始编码声明backgroundworker并绑定事件在注释中已经写出属性的含义和绑定事件的含义。BackgroundWorker backgroundWorker1;backgroundWorker1 = new System.ComponentModel.BackgroundWork...原创 2019-04-25 17:34:53 · 1189 阅读 · 0 评论 -
覆盖父类方法的new和override关键字
new和override都可以覆盖父类的方法,但两者又有所区别。子类使用new覆盖父类方法后,是独立于父类的方法。子类使用override覆盖父类的方法后,只是在调用时不再调用父类方法而调用子类方法。我们来看一段代码 public class Parent { public void T1() { Debug.WriteL...转载 2019-04-25 15:02:11 · 409 阅读 · 0 评论 -
c#虚方法与抽象方法
虚方法与抽象方法的区别虚方法抽象方法用virtual修饰用abstract修饰要有方法体不允许有方法体可以被子类override必须被子类override除了密封类都可以写只能在抽象类中1.抽象方法在子类中必须被重写,且只能在抽象类中被声明(不能包含方法体)2.虚方法在子类中可以选择性重写,可以不重写。除了密封类可以在任意类中声明(包含方法体...原创 2019-04-24 18:05:58 · 306 阅读 · 0 评论 -
c#异步编程实现
同步&异步既然说到异步编程那就说下异步编程和同步编程的区别。同步:简单来说就是按顺序执行,例如登录过程必须输入用户名、密码再点击登录第一步:输入用户名第二步:输入密码第三部:点击登录这就是一个同步过程异步:异步可以说是同时进行多个任务,相互不干扰,第二个任务的执行不需要等待第一个任务执行。例如: 下载一个Oracle的安装包,安装过得人应该知道 Oracle的安装包一般是有...原创 2019-04-19 18:19:59 · 435 阅读 · 0 评论 -
c#线程同步
以一个程序来说明线程不同步所带来的问题示例 class Program { static void Main(string[] args) { Thread.CurrentThread.Name = "主线程--------------"; Program objDemo = new Program()...原创 2019-04-23 18:41:12 · 231 阅读 · 0 评论 -
c#扩展方法
下面先通过一段程序告诉大家什么是扩展方法 static class ExtendMethod { public static int GetAvg(this int sum) { return sum / 5; } } class Program { static void...原创 2019-02-13 18:21:12 · 305 阅读 · 0 评论 -
c# nameof
nameof 避免程序硬编码,当参数变化时会在引用的地方同步变化下面这段代码是使用了nameof和没有使用的两条输出语句,如果变量名num1改为num2,在字符串内部的num1我们需要改为num2,在少的时候倒还好,多的话就会有很大的工作量,使用nameof可以同num1变量名的改变同步改变。 int num1 = 5; Console.Write...原创 2019-02-28 15:46:44 · 2343 阅读 · 0 评论 -
c# LINQ查询方法(2)
聚合类Count、Max/Min、Average直接通过代码进行演示 static void Main(string[] args) { Student obj1 = new Student() { StuId = 1001, StuName = "学生1" }; Student obj2 = new Studen...原创 2019-02-28 14:22:36 · 552 阅读 · 0 评论 -
c# Romting简单示例
1.什么是Remoting简而言之,我们可以将其看作是一种分布式处理方式。从微软的产品角度来看,可以说 Remoting 就是 DCOM的一种升级,它改善了很多功能,并极好的融合到.NET平台下。Microsoft? .NET Remoting 提供了一种允许对象通过应用程序域与另一对象进行交互的框架。这也正是我们使用 Remoting 的原因。在 Remoting 中是通过通道(chann...原创 2018-09-21 17:47:50 · 7904 阅读 · 0 评论 -
WPF-StackPanel面板
StackPanelOrientation属性 Orientation属性决定SatckPanel中元素的排列方向,默认为垂直排列 Orientation=”Vertical”&amp;amp;lt;Window x:Class=&amp;quot;StackPanel.MainWindow&amp;quot; xmlns=&amp;quot;http://schemas.microsoft.com/win原创 2018-06-05 16:37:29 · 9098 阅读 · 1 评论