
C#
文章平均质量分 55
C#菜鸟June
没有整理与归纳的知识,一文不值!高度概括与梳理的知识,才是自己真正的知识与技能。 永远不要让自己的自由、好奇、充满创造力的想法被现实的框架所束缚,让创造力自由成长吧! 多花时间,关心他(她)人,正如别人所关心你的。理想的腾飞与实现,没有别人的支持与帮助,是万万不能的。
展开
-
C#调试入门篇
DotNet程序的调试,是DotNet程序员必备的技能之一,开发出稳定的程序、解决程序的疑难杂症都需要很强大的调试能力。DotNet调试有很多方法和技巧。现在本文就介绍一下借助DebugView工具进行调试的方法,以及由DebugView引申出来的知识点。DebugViewDebugView是一个查看调试信息的非常棒的工具,支持Debug、Release模式编译的程序,甚至支持内核程序,而且能够定制各种过滤条件,让你只看到关心的输出信息,而且可以定制高亮显示的内容等等,非常方便。捕捉Rele转载 2021-09-30 10:32:36 · 1726 阅读 · 0 评论 -
VS中的宏定义
1、$(SolutionDir) :解决方案文件 xxx.sln所在的目录,如下图所示:$(SolutionDir)代表D:\Demo\BindingDemo\,包括尾部的反斜杠“\”.2、$(ProjectDir): 项目的目录,即xxx.csproj所在的目录,包括尾部的反斜杠“\”。如下图所示:$(ProjectDir)代表D:\Demo\BindingDemo\BindingDemo\3、$(ProjectName): 项目名称,例如一个解决方案下,每一个工程都有各自的名称...原创 2021-09-24 11:47:06 · 3041 阅读 · 0 评论 -
Newtonsoft.Json高级用法
手机端应用讲究速度快,体验好。刚好手头上的一个项目服务端接口有性能问题,需要进行优化。在接口多次修改中,实体添加了很多字段用于中间计算或者存储,然后最终用Newtonsoft.Json进行序列化返回数据,经过分析一个简单的列表接口每一行数据返回了16个字段,但是手机APP端只用到了其中7个字段,剩余9个字段的数据全部都是多余的,如果接口返回数据为40K大小,也就是说大约20K的数据为无效数据,3G网络下20K下载差不多需要1s,不返回无效数据至少可以节约1s的时间,大大提高用户体验。本篇将为大家介绍Newt转载 2021-03-03 23:40:34 · 719 阅读 · 1 评论 -
C# @的用法
忽略转义字符 让字符串跨行 在标识符中的用法中C#是不允许关键字作为标识符(类名、变量名、方法名、表空间名等)使用的,但如果加上@之后就可以了public void GetVal(){ string s1 = "D:\\文本文件\\text.txt"; string s2 = @"D:\文本文件\text.txt";// 忽略转义字符 string b1 = "select * " + "from table " +转载 2021-02-05 16:19:21 · 442 阅读 · 0 评论 -
C#的DataTable类Clone及Copy方法的区别
在C#中的Datatable类中,Clone方法和Copy方法都可以用来复制当前的DataTable对象,但DataTable类中的Clone方法和Copy方法还是有区别的,Clone方法只复制结构信息,包括所有 DataTable 架构和约束,但Copy方法除了复制结构信息之外,还复制DataTable的表格行数据信息。DataTable.Clone 方法:克隆DataTable的结构,包括所有DataTable架构和约束,但是不包括数据。DataTable.Copy 方法:复制该Dat...转载 2020-11-26 17:50:11 · 946 阅读 · 0 评论 -
C#委托的介绍(delegate、Action、Func、predicate)
委托是一个类,它定义了方法的类型,使得可以将方法当作另一个方法的参数来进行传递。事件是一种特殊的委托。 1.委托的声明 (1). delegate delegate我们常用到的一种声明 Delegate至少0个参数,至多32个参数,可以无返回值,也可以指定返回值类型。 例:publicdelegateintMethodtDelegate(intx,inty);表示有两个参数,并返回int型。 (2). Action ...转载 2020-07-08 17:58:47 · 332 阅读 · 0 评论 -
WPF中Dispatcher的初步探讨
今天要专门讲一下Dispatcher,原因是WPF中经常碰到多线程下软件界面控件的更新问题。相信很多初步接触WPF的界面开发的朋友,为了保持界面不卡,在一个自己创建的线程中去更新或者读取一个控件时都会遇到了一个很奇怪的Exception异常,显示如下:这个异常是告诉我们,不好意思您非法操作了。这个问题我个人认为估计99.9%的人都碰到过。因此,很多人觉得微软的WPF真不好用,就...转载 2020-04-12 15:12:05 · 1336 阅读 · 0 评论 -
WPF Dispatcher详解
一、Dispatcher介绍 微软在WPF引入了Dispatcher,那么这个Dispatcher的主要作用是什么呢? 不管是WinForm应用程序还是WPF应用程序,实际上都是一个进程,一个进程可以包含多个线程,其中有一个是主线程,其余的是子线程。在WPF或WinForm应用程序中,主线程负责接收输入、处理事件、绘制屏幕等工作,为了使主线程及时响应,防止假死,在开发...转载 2020-04-12 14:59:37 · 1083 阅读 · 0 评论 -
C#中Equals和= =(等于号)的比较
一、值类型的比较对于值类型来说 两者比较的都是"内容"是否相同,即值 是否一样,很显然此时两者是划等号的。例:int i = 9;int j = 9;Console.WriteLine("Equals和= =(等于号)的比较");Console.WriteLine("i.Equals(j) :" + i.Equals(j));Console.WriteLi...转载 2020-02-29 09:37:49 · 1660 阅读 · 0 评论 -
C#打印页面设置(横向,页宽,页高)
c#打印时页面设置using Excel = Microsoft.Office.Interop.Excel;Excel.Application tmpExcel = new Excel.ApplicationClass();Excel.Workbook tmpbook = tmpExcel.Workbooks.Open(tmppath, Type.Missing, Type.Missing,...转载 2020-02-15 18:47:57 · 2973 阅读 · 0 评论 -
C# 导出 Excel 和相关打印设置(不断更新中)
Excel.Application myExcel = new Excel.Application();Excel.Workbook workbookData = myExcel.Application.Workbooks.Add(Excel.XlWBATemplate.xlWBATWorksheet);Excel.Worksheet xlSheet = (Worksheet)workbook...转载 2020-02-15 18:46:19 · 600 阅读 · 0 评论 -
C#中调试信息
在C#代码中添加Debug.Write("XXXXX");调试模式下XXXXX输出到界面下方的“输出窗口”中,开始执行时是输出到调试器窗口,比如DebugView原创 2017-07-29 15:33:53 · 1826 阅读 · 0 评论 -
C# 单例模式
单例模式就是保证在整个应用程序的生命周期中,在任何时刻,被指定的类只有一个实例,并为客户程序提供一个获取该实例的全局访问点。 一、经典模式:public class Singleton{ private static Singleton instance; private Singleton() { }...转载 2019-06-19 11:15:55 · 650 阅读 · 0 评论 -
C#中单例的双重锁定模式
转载自:https://blog.youkuaiyun.com/sinat_20559947/article/details/48311915using System;using System.Collections.Generic;/// <summary>/// 适用于在多线程的情况下保证只有一个实例化对象的情况,例如银行的操作系统/// </summary>nam...转载 2019-06-19 11:31:50 · 268 阅读 · 0 评论 -
C# 什么情况下只写try和finally语句而不用写catch 语句呢?
转自:https://blog.youkuaiyun.com/change888/article/details/4327628问题:什么情况下只写try和finally语句而不用写catch 语句呢?catch 就是用来执行在发生异常时的代码,如果catch 都不写的话那写这个try和finally是起到什么作用呢?RE:如果你不希望在这里处理异常,而当异常发生时提交到上层处理,但在这个地方...转载 2019-06-25 14:12:27 · 1509 阅读 · 0 评论 -
C# Const和Readonly的区别
参见文章:https://www.cnblogs.com/daidaibao/p/4214268.html和文章:https://blog.youkuaiyun.com/u013930409/article/details/45953481/转载 2019-07-09 13:38:12 · 119 阅读 · 0 评论 -
C# out与ref关键字
本文转自:https://www.cnblogs.com/GreenLeaves/p/6843026.html1、相同点ref和out都是按地址传递,使用后都将改变原来参数的数值。2、ref关键字(1)使用ref关键字的注意点:i、方法定义和调用方法都必须显式使用ref关键字ii、传递到ref参数的参数必须初始化,否则程序会报错iii、通过ref的这个特性,一定...转载 2019-06-28 23:33:48 · 176 阅读 · 0 评论 -
c#中的关键字out是什么意思?ref是什么意思?它们有什么区别?
原文:https://blog.youkuaiyun.com/sinat_23079759/article/details/52895385不知大家有没有遇到过需要一个函数返回多个值的情况。当写代码要返回多个值的时候,当然可以返回一个数组来实现,但如果遇到需要返回的多个值的类型不同呢?这个时候怎么办?c#中,out关键字和ref关键字就起作用了。(且out更适合用到多返回值的地方)一个函数中,使...转载 2019-06-28 23:39:51 · 772 阅读 · 0 评论 -
C# 防止程序运行多个实例
防止程序运行多个实例的方法有多种,如:通过使用互斥量和进程名等//=====创建互斥体法:=====bool blnIsRunning;Mutex mutexApp = new Mutex(false, Assembly.GetExecutingAssembly().FullName, out blnIsRunning);if (!blnIsRunning){ Messa...转载 2019-06-28 23:50:56 · 711 阅读 · 0 评论 -
浅谈NuGet在VS中的运用
一 概述在我们讲解NuGet前,我们先来看看一个例子。1.例子:假设现在开发一套系统,其中前端框架我们选择Bootstrap,由于选择Bootstrap作为前端框架,因此,在项目中,我们需要引入Bootstrap相关文件,大致会执行如下操作。步骤一:下载Bootstrap文件输入Bootstrap官网域名 http://v3.bootcss.com/输入域名...转载 2019-07-17 10:07:58 · 753 阅读 · 0 评论 -
NuGet
转自:https://www.cnblogs.com/dathlin/p/7705014.html首先说明Nuget是什么呢?它的官方是:https://www.nuget.org/官方主页的介绍如下:What is NuGet?NuGet is the package manager for .NET. The NuGet client tools provide the abi...转载 2019-07-17 10:10:41 · 280 阅读 · 0 评论 -
nlua的基本配置使用
近来想测试服务器增加热更新能力,考虑加入lua热更新。目前鹅厂的xlua也是基于nlua的早期版本开发的,黑历史可以参考(https://www.oschina.net/news/80638/c-net-lua-unity3d)nlua官网(http://nlua.org/)nlua的前身是LuaInterface,2.0.3版后改名为nluaLuaInterface只具有简单的函...转载 2019-07-17 10:29:27 · 1464 阅读 · 0 评论 -
C# IPAddress和IPEndPoint
IPAddress类提供了对IP地址的转换、处理等功能。其Parse方法可将IP地址字符串转换为IPAddress实例。如:IPAddressip=IPAddress.Parse(“192.168.10.137”);IPAddress类提供了7个只读字段:Any表示本机可用的任何IP地址 ,等效于以点分隔的四部分表示法格式的 0.0.0.0 这个IP地址...原创 2019-08-24 21:08:22 · 6667 阅读 · 0 评论 -
C# string转int
在C# 后台将String类型转换成int有以下几种方法:(1) int.TryParse(string);(2) Convert.Toint32(string);(3) (int)string;但是,使用Convert.ToInt32(string) 会出现输入字符串格式错误问题。使用Int.TryParse(string)也会转换失败,不会错误,会输出默...转载 2019-09-04 13:22:47 · 25859 阅读 · 2 评论 -
Socket:shutdown()函数:优雅地断开TCP连接
调用 close()/closesocket() 函数意味着完全断开连接,即不能发送数据也不能接收数据,这种“生硬”的方式有时候会显得不太“优雅”。图1:close()/closesocket() 断开连接上图演示了两台正在进行双向通信的主机。主机A发送完数据后,单方面调用close()/closesocket() 断开连接,之后主机A、B都不能再接受对方传输的数据。实际上,是完全无...转载 2019-06-06 16:13:10 · 1896 阅读 · 0 评论 -
Socket:图解TCP四次握手断开连接
建立连接非常重要,它是数据正确传输的前提;断开连接同样重要,它让计算机释放不再使用的资源。如果连接不能正常断开,不仅会造成数据传输错误,还会导致套接字不能关闭,持续占用资源,如果并发量高,服务器压力堪忧。建立连接需要三次握手,断开连接需要四次握手,可以形象的比喻为下面的对话:[Shake 1] 套接字A:“任务处理完毕,我希望断开连接。” [Shake 2] 套接字B:“哦,是吗?请稍等,...转载 2019-06-06 15:24:44 · 240 阅读 · 0 评论 -
深入浅出理解有限状态机
转自:http://www.jianshu.com/p/5eb45c64f3e3有限状态机有限状态机是一种用来进行对象行为建模的工具,其作用主要是描述对象在它的生命周期内所经历的状态序列,以及如何响应来自外界的各种事件。在计算机科学中,有限状态机被广泛用于建模应用行为、硬件电路系统设计、软件工程,编译器、网络协议、和计算与语言的研究。比如下图非常有名的T转载 2017-12-11 10:25:25 · 556 阅读 · 0 评论 -
换行符与回车符
回车符:'\r',将光标移动到行的最左边;换行符:'\n',将光标移动到下一个新行,光标不一定在新行的最左边;回车换行:'\r\n',将光标移动到下一个新行的最左边;在Windows操作系统下,回车键被当做'\r\n'的组合使用。若将一串文本写入txt中,并对其换行,需要在文本后面添加'\r\n'才能达到换行目的,若只添加了'\r'或者'\n'则文本中只会有一行,无法达到换原创 2017-10-26 22:59:00 · 3454 阅读 · 0 评论 -
C# 使用path获取文件路径
using System.IO;Path类的静态方法: ChangeExtension 更改路径字符串的扩展名。 Combine(String()) 将字符串数组组合成一个路径。 Combine(String, String) 将两个字符串组合成一个路径。 Combine(String, String, String) 将三个字符转载 2017-11-02 19:56:43 · 2825 阅读 · 0 评论 -
C# 获取当前程序运行路径
//获取当前进程的完整路径,包含文件名(进程名)。string str = this.GetType().Assembly.Location;result: X:\xxx\xxx\xxx.exe (.exe文件所在的目录+.exe文件名)//获取新的 Process 组件并将其与当前活动的进程关联的主模块的完整路径,包含文件名(进程名)。string str = System.Diagn转载 2017-11-02 19:44:01 · 24263 阅读 · 0 评论 -
C# 模拟键盘输入
功能:将一个或多个按键消息发送到活动窗口,就如同在键盘上进行输入一样。语法:SendKeys.Send(string keys);SendKeys.SendWait(string keys);说明:(1)每个按键由一个或多个字符表示。为了指定单一键盘字符,必须按字符本身的键。例如,为了表示字母 A,可以用 "A" 作为 string。为了表示多个字符,就必须在字符后面直接加转载 2017-10-24 15:58:53 · 13850 阅读 · 1 评论 -
StringBuilder
StringBuilder 采用了构造器设计模式的思想高效地构造一个字符串对象,在构造过程中StringBuilder可以有效避免临时字符串对象的生成。1:当需要操作很长的字符串,或者要对字符串进行非常频繁的操作时,应该使用StringBuilder,其余场合,用String比较方便。2:之所以说平常情况用String比较方便是因为:StringBuilder sb="he转载 2017-10-27 17:05:19 · 275 阅读 · 0 评论 -
C# dllimport
一、DllImport是System.Runtime.InteropServices命名空间下的一个属性类,其功能是提供从非托管DLL导出的函数的必要调用信息DllImport的定义如下:public class DllImportAttribute:System.Attribute{ public DllImportAttribute(string dllNam转载 2017-10-28 13:59:52 · 3154 阅读 · 0 评论 -
C++ dll 类型与 C#类型对应关系
C# 中char类型为两个字节,C++中char类型为1个字节; //C++中的DLL函数原型为 //extern "C" __declspec(dllexport) bool 方法名一(const char* 变量名1, unsigned char* 变量名2) //extern "C" __declspec(dllexport) boo转载 2017-10-27 16:42:48 · 741 阅读 · 0 评论 -
C# 关于Thread.join()的理解
转自:http://www.cnblogs.com/slikyn/articles/1525940.html 今天是第一次在C#中接触Thread,自己研究了一下其中Thread.Join()这个方法,下面谈谈自己的理解。 Thread.Join()在MSDN中的解释很模糊:Blocks the calling thread until a thread ter转载 2017-08-11 16:43:27 · 659 阅读 · 0 评论 -
双缓冲(Double Buffer)原理和使用
原文转自:http://blog.youkuaiyun.com/xiaohui_hubei/article/details/16319249一、双缓冲作用 双缓冲甚至是多缓冲,在许多情况下都很有用。一般需要使用双缓冲区的地方都是由于“生产者”和“消费者”供需不一致所造成的。这样的情况在很多地方后可能会发生,使用多缓冲可以很好的解决。我举几个常见的例子:转载 2017-02-28 17:52:32 · 1541 阅读 · 0 评论 -
C#中using关键字的使用
转载自http://www.cnblogs.com/richardcmd/archive/2012/03/12/2392572.htmlusing的用途和使用技巧. 1、 引用命名空间 2、 为命名空间或类型创建别名 3、 使用using语句 1、 引用命名空间,这样可以在程序中引用命名空间的类型而不必指定详细的命名空间.转载 2016-08-02 16:34:24 · 382 阅读 · 0 评论 -
C# SerialPort串口接收中的this.Invoke
本文转自:http://www.ciast.net/post/20160752.html private void DisplayText(object sender, EventArgs e){ textBox1.Text = datain;} private void serialPort1_DataReceived(object sender, SerialDataRe...转载 2018-08-20 10:52:12 · 445 阅读 · 0 评论 -
C# 使用File.Create方法创建文件时,报进程被占用
在一个程序里偶然用了System.IO.File.Create去创建文件,运行时一直报错(进程被占用),后来在网上找到了解决办法,引用了一下。winfrom中操作文件:判断是否有当前的文件存在,不存在则进行创建,在进行操作;if(!System.IO.File.Exists(fileName)){ System.IO.File.Create(fileName);}但...转载 2018-08-27 13:42:05 · 10303 阅读 · 0 评论 -
C# 以非独占方式打开文件
使用C#开发中,当一个程序正在读写某个文件,另一个程序则无法操作此文件。使用FileStream类,其中的FileShare参数可设置文件的共享方式:FileShare.None 谢绝共享当前文件 FileShare.Read 允许别的程序读取当前文件 FileShare.Write 允许别的程序写当前文件 FileShare.ReadWrite 允许别的程序读写当前文件usin...原创 2018-08-27 14:25:45 · 4617 阅读 · 0 评论