随笔分类 - C#
摘要:在一个文件夹内搜索指定格式的所有文件是一个十分常用的操作,通常使用DirectoryInfo.GetFiles 的方法。 在.NET Framework中,它有三个重载: (1)GetFiles():返回当前目录下所有文件,不包括文件夹; (2)GetFiles (string searchPatt
阅读全文
摘要:计算机无法生成真正意义上的完全随机数字。程序生成的所谓随机数实际上是通过一系列复杂的计算,基于一个固定的随机种子来模拟随机性,因此这些数字被称为伪随机数。换句话说,如果使用相同的随机种子,生成的随机数也会相同。常见的随机数生成方法包括平方取中法和线性同余法,而常用的随机种子通常是基于时间。 在.NE
阅读全文
摘要:我们经常使用try-catch来捕捉异常,但从.NET 4.0开始异常处理机制有所改变,导致AccessViolationException这类异常无法通过try-catch捕捉,而导致程序崩溃。 官方解释 AccessViolationException当代码尝试读取或写入尚未分配或无权访问的内存
阅读全文
摘要:一个小小的细节难以不会改变大局,但多个细节可能会影响成败。 在C#中使用Process启动时,ProcessStartInfo参数的UseShellExecute属性可设置为true和false,两者有什么区别,该如何使用? Process.Start 本质上是启动一个新的子进程,当设置为true时
阅读全文
摘要:为了使用程序目录更加整洁和美观,我们会建立不同文件夹,分门另类地管理软件目录下的程序集和配置文件,要想使主程序能够读取它们,必须要设置PrivatePath路径,常用的方法包括: 方法一 config配置 在app.config中配置中,添加如下代码,操作简单,配置灵活。 <runtime> <gc
阅读全文
摘要:在项目中需要实现汉字转拼音的业务需求,常见的类库包括微软的PinYinConverter和开源的NPinyin。如 但在实际处理过程,还有很多问题需要注意: (1)分词 (2)多音字 (3)生僻字 (4)地名 使用现成的类库一般都不能完美解决这些问题,最好的方式就是建立自己的分词库,优化查询 算法。
阅读全文
摘要:上一年,为了最大程度减小影响,提得最多的词是 "精准防控"。程序异常处理也要做到精准,这样才能节约排查时间,降低分析难度,快速解决问题。我们经常使用try-catch捕捉异常,使用StackTrace来输出具体位置。但在复杂的框架和业务系统中,要注意它的使用方式。下面分别以不同的实例来说明问题。 一
阅读全文
摘要:异常处理是编程中必知必会的重要内容,我们经常使用try-catch来捕获和记录异常信息的原因、位置信息,以便进行排查和解决问题。使用堆栈信息可明确抛出异常具体行号,但有时输出的却没有行号。如 System.DivideByZeroException: 尝试除以零。 在 ExceptionTest.F
阅读全文
摘要:Debug调试版和Release发行版,它们有各用的特点和用途。但要注意抛出异常时的行号可能不相同。 以下面一段代码为例: using System; using System.Windows.Forms; namespace ExceptionTest { public partial class
阅读全文
摘要:在项目窗体的控件上设置图标时,将导入图片文件到"项目资源"(Project resource)中无效。 原因是系统没有了Resources.resx文件,在项目上右键,属性-资源,"此项目不包含默认的资源文件。单击此处可进行创建。" 创建Resources.resx文件后,就可以导入图片了。
阅读全文
摘要:删除文件夹或文件是一个很简单的操作,调用File或Directory的Delete方法即可。但如果文件较多,非常细碎的话,这样的方法就无法容忍了。 在操作系统中一次性删除大量文件,也应该有这样的体会。 所以,得采取其他方法,来提高删除的速度。测试可行的方案是使用Windows 函数,而不是 .NET
阅读全文
摘要:在系统维护过程中,为了方便分析应用程序错误,我们经常要确定用户的环境,如操作系统的版本。为了快速准确地获取版本信息,可以通过程序读取(有的小白用户可能不知道怎么查看系统版本)。一般获取操作系统版本的方法有三种: 一、环境参数法 通过Environment即可获取Version版本信息。 Operat
阅读全文
摘要:为了像Windows一样,对于 字符串保证排序不会乱,可以自定义排序方法。 这里采用CompareStringEx来实现。 第一步,声明CompareStringEx static readonly Int32 NORM_IGNORECASE = 0x00000001; static readonl
阅读全文
摘要:选择文件使用OpenFileDialog,选择文件夹只有选择 FolderBrowserDialog,这种选择对话框让人有些抓狂,特别当文件目录比较深、需要多次选择文件夹操作时。 那么,如何定制一款既符合用户使用习惯,又能方便选择文件夹的对话框呢? 方案一 Microsoft类库 引用Microso
阅读全文
摘要:在编程中,异常处理是必须掌握的基本内容,这里我们来讨论一下自定义异常的使用注意事项。先通过三个简单的例子来说明: 不处理异常 最常见的情况,在主函数Main中调用封装的Fun功能,在Fun函数中不做任何异常处理。 namespace ConsoleApp1 { class Program { pri
阅读全文
摘要:许多API回调函数,都需要用AddressOf函数来获取被调用函数的地址。当在类模块中使用编译报错:操作符AddressOf使用无效。 原因:在VBA中Addressof不能在Class或Form中使用,只有Module下使用。 AddressOf 运算符 | Microsoft Docs Addr
阅读全文
摘要:我们可以向ArcMap窗口中直接拖放mxd工程文件、shp矢量文件 、tif栅格文件等,十分方便;使用控件的DragEnter和DragDrop即可实现拖放操作,但在Win7和Win10系统中,如果程序以管理员运行,则实现的拖动操作无效。 原因分析 Windows消息是一种进程间通信机制,为了防止较
阅读全文
摘要:宇宙第一 IDE——Visual Studio代码调试时"回退当前执行代码"功能非常好用,但断点不会被命中,则无法进行断点调试,如下图所示:当前不会命中断点。源代码与原始版本不同。 网上有很多种解决方法,但几经测试都无效。最后分析生成日志发现全部生成时跳过了某些项目。既然跳过了,则表示未重新生成,当
阅读全文
摘要:在GIS开发程序中,为了增加扩展性,往往采用插件式开发模式,自然用到了反射技术。如果反射使用的dll控制不好,很容易引发反射异常,查找原因十分不方便,可以使用PrettyBin或Costura等组件实现对类库的管理。 问题描述 使用主程序Main.exe反射调用A.dll文件时,出现"未处理 Sys
阅读全文
摘要:在 使用Activator.CreateInstance反射创建对象时,一定要注意构造函数参数问题。如果对象有自定义的构造参数,必须添加参数对应的参数。 MyObject myObject = (MyObject)Activator.CreateInstance(myObjectType); //错
阅读全文

浙公网安备 33010602011771号