![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
C#
Coding......
Stay Hungry,Stay Foolish
展开
-
C#下vtMissing的替代品、函数缺省值的默认参数
C# 缺省参数原创 2022-12-02 18:35:15 · 278 阅读 · 0 评论 -
C#使用FIle.delete删除文件/文件夹提示对路径的访问被拒绝——解决方案
平台:Win10+VS2015在写一个根据指定的文件夹名删除所给目录下文件夹的小程序,最开始的写法如下,运行时提示“对xxx路径的访问被拒绝”,导致删除失败...DirectoryInfo[] folders = dir.GetDirectories();...foreach (DirectoryInfo folder in folders){ foreach(string key in keys) { //文件夹名等于key才删除 i.原创 2021-01-16 15:02:20 · 8816 阅读 · 0 评论 -
VS C#窗体程序未能找到Form1.resx文件解决方法
新建另一C#窗体程序,在窗体上任意添加一个控件,在解决方案视图下可以看到多了一个“Form1.resx”文件,在工程文件目录中找到它,复制到缺失Form1.resx文件的工程目录下即可。...原创 2019-12-02 17:29:43 · 4971 阅读 · 1 评论 -
C#中IntPtr类型
1.C#中的IntPtr类型被称之为“平台特定的整数类型”,用于本机资源,例如窗口句柄。2.资源的大小取决于使用的硬件和操作系统,即此类型的实例在32位硬件和操作系统中将是32位,在64位硬件和操作系统中将是64位;但其大小总是足以包含系统的指针(因此也可以包含资源的名称)。3.在调用API函数时,类似含有窗口句柄参数(HANDLE)的原型函数,应显示地声明为IntPtr类型。4.In...原创 2019-08-16 21:07:37 · 37268 阅读 · 4 评论 -
C#中String与 StringBuilder 的区别
先看代码:string aTest = "abc";//分配固定的内存大小aTest += "ddd"; //销毁原先的数据再来分配,消耗大StringBuilder sb = new StringBuilder(20);//指定分配大小,指定分配内存大小,性能就会得到提升。 //如果超过指定大小系统,系统会倍增,自...原创 2019-08-16 12:42:51 · 401 阅读 · 0 评论 -
C#中关键字ref和out
1、ref:ref:MSDN的定义为:“The ref keyword indicates a value that is passed by reference.”就是通过引用来传递参数。ref也是Reference的缩写。了解了定义之后,ref怎么用呢?首先我们要明白值类型和引用类型的概念,这里的ref基本上就是服务于值类型的。ref 的使用//不使用 ref;void Me...原创 2019-08-16 12:36:49 · 588 阅读 · 0 评论 -
C#中创建DLL(动态链接库)及其使用
一、DLL 与应用程序动态链接库(也称为 DLL ,即为“ Dynamic Link Library ”的缩写)是 Microsoft Windows 最重要的组成要素之一,打开 Windows 系统文件夹,你会发现文件夹中有很多 DLL 文件, Windows 就是将一些主要的系统功能以 DLL 模块的形式实现。动态链接库是不能直接执行的,也不能接收消息,它只是一个独立的文件,其中包含能...原创 2019-08-11 17:40:57 · 39121 阅读 · 7 评论 -
C#调用C++DLL类的方法
C++的优势在于高效灵活,C#的优势在于简单易用,两者结合起来对项目开发来说是件好事,而且C++不容易反编译,也保障了代码的安全性,如果一些核心算法使用C#编写,那么保密就是一个问题。 C++生成的DLL一般只提供函数接口,不能直接用C#调用C++写的类,这样非常不方便,于是经过半天的反复测试,终于确定了一套可行的方案,下面就是整个流程的一个范例。(1)编写C++类Mask,类前面的e...原创 2019-08-15 14:42:08 · 2432 阅读 · 0 评论 -
C#调用非托管C++DLL:通过托管C++DLL间接调用
现在在Windows下的应用程序开发,VS.Net占据了绝大多数的份额。因此很多以前搞VC++开发的人都转向用更强大的VS.Net。在这种情况下,有很多开发人员就面临了如何在C#中使用C++开发好的类的问题。下面就用一个完整的实例来详细说明怎样用托管C++封装一个C++类以提供给C#使用。 比如,现在有一个工程名为NativeCppDll的由C++编写的DLL,里面输出了一个CPe...原创 2019-08-15 14:21:18 · 553 阅读 · 0 评论 -
C#中统计程序运行时间
//头文件要加入 using System.Diagnostics; //具体: Stopwatch stpwth = new Stopwatch(); stpwth .Start(); .... //要统计耗时的程序主体 s...原创 2019-08-11 12:24:56 · 2507 阅读 · 0 评论 -
C#中数值型数据保留N位小数方法
1.只要求保留N位不四舍5入 float f = 0.55555f; int i =(int)(f * 100); f = (float)(i*1.0)/100;//保留小数后2位 2.保留N位,四舍五入 decimal d= decimal.Round(decimal.Parse("0.55555"),2);)//保留小数点后2位 ...原创 2019-08-11 11:09:09 · 3407 阅读 · 0 评论 -
C#调用C++ dll类型对照表汇总
函数调用导致堆栈不对称。原因可能是托管的PInvoke签名与非托管的目标签名不匹配,在dllimport中加入CallingConvention参数就行了,[DllImport(PCAP_DLL,CharSet=CharSet.Auto,CallingConvention=CallingConvention.Cdecl)]要注意C++与NET中数据类型的对应: //...原创 2019-08-14 22:00:51 · 2123 阅读 · 0 评论 -
C#获取当前进程、项目路径的方法
stringstr1=Process.GetCurrentProcess().MainModule.FileName;//可获得当前执行的exe的文件名。stringstr2=Environment.CurrentDirectory;//获取和设置当前目录(即该进程从中启动的目录)的完全限定路径。//备注按照定义,如果该进程在本地或网络驱动器的根目录中启动,则此属性的值为驱动器名...原创 2019-08-10 19:36:38 · 4565 阅读 · 0 评论 -
C#中throw抛出异常后,后续代码执行情况
1、问题来源参见以下代码:public void add(int index, E element){ if(size >= elements.length) { throw new RuntimeException("顺序表已满,无法添加"); //return; //该句还需要吗? } ....}2、测试...原创 2019-08-10 17:02:37 · 6182 阅读 · 1 评论 -
C#专业矩阵运算库——Math.Net
一、基础知识1、Math.net是什么Math.net计算库是专为.NET开发的开源科学计算库。包含了大部分矩阵运算、线性运算等功能。效率高,且可以在C#中直接使用。简单的矩阵运算,其效率可以达到C#代码的10倍以上。开源地址:http://mathnetnumerics.codeplex.comMath.NETNumerics是核心功能是数值计算。主要是提供日常科学工程计...转载 2019-08-10 14:09:52 · 6530 阅读 · 1 评论 -
C#调用非托管C++DLL:直接调用法
在实际软件开发过程中,由于公司使用了多种语言开发,在C#中可能需要实现某个功能,而该功能可能用其他语言已经实现了,那么我们可以调用其他语言写好的模块吗?还有就是,由于C#开发好的项目,我们可以利用reflector等反编译工具反编译出其源代码,所以对于一些核心算法,我们不希望被别人知道,因此为了增强代码的安全性,我们需要将一些核心算法用C或C++来编写,然后用C#来调用这些已经写好的接口。在面对以...原创 2019-08-14 16:58:02 · 1573 阅读 · 1 评论 -
C++、C#控制台应用程序暂停下来的方法
一、C++控制台应用程序暂停//////一、针对Microsoft#include <stdlib.h> //(1)第一种方式system( "PAUSE "); //(2)第二种方式getchar(); //(3)第三种方式Sleep();///////二、针对Linux(1)第一种方式getchar();/////通用的一种方法是...原创 2019-08-14 16:24:18 · 10079 阅读 · 0 评论 -
C#调用C/C++动态库Dll时几个注意事项:PInvoke错误
经常需要封装一些C/C++函数放入动态库中给C#程序调用,通常情况下直接写成如下形式即可:C#封装调用:[DllImport("depressor.dll")] //错误调用方式private static extern void DataDepress(ushort[] data);但是经常出现找不到函数、出现PInvoke错误、传入的数据是一堆莫名其妙的数值之类的错误。实际...原创 2019-08-14 11:37:31 · 2226 阅读 · 0 评论