需求:给定一个只包括 ‘(‘,‘)‘,‘{‘,‘}‘,‘[‘,‘]‘ 的字符串,判断字符串是否有效。有效字符串需满足:左括号必须用相同类型的右括号闭合。左括号必须以正确的顺序闭合。注意空字符串可被认为是有效字符串。代码如下:publicstaticbool IsValiad(string s){Stack<string> stack = new Stack<string>();//创建一个字符串的栈Dictionary<string, string> dic = new Dictionary<string, string>();dic.Add("(", ")");di...
一、引言 经过这段时间对设计模式的学习,自己的感触还是很多的,因为我现在在写代码的时候,经常会想想这里能不能用什么设计模式来进行重构。所以,学完设计模式之后,感觉它会慢慢地影响到你写代码的思维方式。这里对设计模式做一个总结,一来可以对所有设计模式进行一个梳理,二来可以做一个索引来帮助大家收藏。 PS: 其实,很早之前我就看过所有的设计模式了,但是并没有写博客,但是不久就很快忘记了,也没有起到什么作...
主界面: Form1中的代码:namespace _06委托练习_窗体传值{ public partial class Form1 : Form { public Form1() { InitializeComponent(); } private void btn1_Click(object sender, EventArgs e) { Form2 f2=new Form2(txt1.Text,DoSth);//传过去一个字符串和DoSth方法 f2.Show(); } //把字符串变量的值赋值给文本框 public ...
搜索引擎中一个比较重要的环节就是从网页中抽取出有效内容。简单来说,就是吧HTML文本中的HTML标记去掉,留下我们用IE等浏览器打开HTML文档看到的部分(我们这里不考虑图片). 将HTML文本中的标记分为:注释,script ,style,以及其他标记分别去掉: 1.去注释,正则为: output = Regex.Replace(input, @"<!--[^-]*-->", string.Empty, RegexOptions.IgnoreCase); 2.去script,正则为: ouput = Regex.Replace(input, @"<script[^>]*?>.*?...
1.WPF全局捕获异常 public partial class App : Application { public App() { // 在异常由应用程序引发但未进行处理时发生。主要指的是UI线程。 this.DispatcherUnhandledException += new System.Windows.Threading.DispatcherUnhandledExceptionEventHandler(App_DispatcherUnhandledException);// 当某个异常未被捕获时出现。主要指的是非UI线程 AppDomain.CurrentDomain.Unhan...
.net 4.0添加了dynamic关键字。通过声明dynamic变量,我们可以在C#这个静态语言中使用一下动态语言的特性。微软添加dynamic关键字,主要是为了使在C#中对COM编程更加简化。对于我这个2003年才开始学编程的人来说COM就和汇编一样,只有听说过的份。那么dynamic还有什么其他的用途呢?最近有点时间研究了一下,感觉很好玩,很Cool。作为学习成果,下面是一个通过IDynamicMetaObjectProvider实现的一个可以混合动态Property和静态Prop...
原文:C#GUIDGUID表示全局统一标识,用于产生不重复的数据。下图是使用GUID时系统给出的提示,ToString()的重载部分说NULL和空字符串与"D"等价,这里并不等价,原因应该是GUID的生成与通过以太网卡地址、纳秒级时间、芯片ID码和许多可能的数据有关,所以这里的数据并不一样。测试:由图可知,NULL和“D”生成的GUID以“-”隔开。“N”生成的GUID没有间隔。“B”则以“-”并且全部数据有大括号{}包住。“P”则以“-“隔开,并且全部数...
工作的时候遇到静态字段书写,优先考虑下面几个方面(意识):1. 如果是多次使用,要注意对静态字段的重新初始化,防止之前的状态对新的过程的影响或保存之前状态用于之后过程;2. 注意静态字段对内存的影响(静态字段所保存的数据会一直驻留在内存中,存在于整个程序的生命周期,如果不显示的释放 -- 设置为null等等);--> 不要用静态字段保存一些临时的、大量的数据3. 注意静态字段的线程安全问题(异步调用修改静态字段)4. 注...
在C#中子线程如何操作主线程中窗体上控件 在C#中,直接在子线程中对窗体上的控件操作是会出现异常,这是由于子线程和运行窗体的线程是不同的空间,因此想要在子线程来操作窗体上的控件,是不可能简单的通过控件对象名来操作,但不是说不能进行操作,微软提供了Invoke的方法,其作用就是让子线程告诉窗体线程来完成相应的控件操作。 要实现该功能,基本思路如下: 把想对另一线程中的控件实施的操作放到一个函...
这一个则比较投机,准确性不能保证,可以参考: 这个类获取当前进程的句柄: public class MyProcess { private bool haveMainWindow = false; private IntPtr mainWindowHandle = IntPtr.Zero; private int processId = 0; private delegate bool EnumThreadWindowsCallback(IntPtr hWnd, IntPtr lParam); public IntPtr GetMainWindowHandle(int processId) { if (!t...
因为项目需求,查找资料并编写了这个拼音通用类。在博客园分享:)其中的多音字首拼,感觉还是非常实用的。可识别中文、英文和符号 1using System;2using System.Collections.Generic;3using System.Collections.ObjectModel;4using System.Linq;5using System.Text;6using Microsoft.International.Converters.PinYinConverter;7 8namespace MyConsoleApp9{10publicsealedclass PinYin11 {12private PinYin() { }13 14///<su...
进程:首先需要引用命名空间:using systemDiagnostics;最简单的打开进程的方法,进程名并不是汉字:Process.start("calc");//clac是计算器的进程,使用这个方法就可以打开计算器了 Process.start("notepad");//可以同时打开多个进程,notepad是记事本 以浏览的方式打开一个进程://首先把一个进程的路径输出到TextBox里; //返回一个bool类型 DialogResult dr = openFiledialog1.ShowDialog(); //判断if(dr==Diagloresult.OK) {te...
string InsertString<T>(T t) { var type = typeof(T); //反射对象 var A = type.GetProperties(); //获取对象属性 var insertString = "insert into " + t.GetType().Name + " values ("; //t.GetType().Name 获取类名 foreach (var b in A) { insertString += "@" + b.Name...
原文地址:http://blog.163.com/loveyingchun_1314/blog/static/2382425120124312627530/ 引用Microsoft.Office.Core时需要在com选项中添加Microsoft Office 12.0 Object Library(我的Office版本是2007),如果没有这个需要修改Office添加开发支持(开始-程序-Office更改)using System; using System.Collections.Generic; using System.Linq; using System.Text; using POWERPOINT =Microsoft.Office.Interop.PowerPoint; ...
可能 nuget自身的版本落后于适配程序包的版本Visual Studio 2013 更新 NuGet 包管理器 ? 前言使用 Visual Studio 中的 NuGet 包管理器下载程序时,有时可能出现类似的错误:“Newtonsoft.Json”已拥有为“NETStandard.Library”定义的依赖项。解决该错误的有效办法就是更新 NuGet 包管理器,下面以 Visual Studio Ultimate 2013 为例,介绍一下更新 NuGet 包管理器的具体步骤。 1. 打开Visual Studio 2013。2. 选择菜单栏 -> ...