使用正则表达式的缺点

最近我的经理告诉我不要太依赖Regex,因为它有很多缺点。 当我试图了解更多时,我听说它有像正则表达式这样的问题可能导致内存泄漏,因为一些对象在使用后仍继续挂在字符串引用上? .NET RegEx“内存泄漏”调查 所以说reg-ex会导致内存开销并且如果你有其他选择则不应该使用它是正确的吗? 是否有任何其他不利于注册(除了它很难学习:)) PS我正在开发一个类似于网络爬虫的应用程序(c#.net),它提取所有href和一些其他信息,如标题,元标记等。我可以选择使用HTML Agility包而不是reg-ex。

将文本框文本保存到XML文件中

我有一个带有1个按钮和4个文本框的ASP.NET WebForm。 每次加载页面时,都会执行以下代码从XML文件读取数据并显示在文本框中: private void PutWhatWasBefore() { var xml = XDocument.Load(@”C:\Settings.xml”); From_display.Text = xml.Element(“Settings”).Element(“Remember”).Attribute(“fromdisplay”).Value.ToString(); From_Smtp.Text = xml.Element(“Settings”).Element(“Remember”).Attribute(“fromsmtp”).Value.ToString(); subject.Text = xml.Element(“Settings”).Element(“Remember”).Attribute(“subject”).Value.ToString(); } 此代码运行良好,它将所有内容放在文本框中。 但是,这是一个很大但是,当我单击按钮时,以下代码写入XML文件不起作用: string tem = Template1.Text; string from = From_Smtp.Text; string dis = From_display.Text; string sub = subject.Text; var x = new XDocument( new XElement(“Settings”, new XElement(“Remember”, new XAttribute(“fromsmtp”, from), new XAttribute(“subject”, sub), new […]

TextFormatFlags枚举中EndEllipsis和WordEllipsis之间的区别是什么?

根据我对文档的理解,当使用TextFormatFlags.EndEllipsis ,应该修剪文本以适合显示矩形并用省略号替换: EndEllipsis | 删除修剪线的末尾,并用省略号替换它们。 使用TextFormatFlags.WordEllipsis ,应将文本修剪为适合显示矩形内的最后一个单词,并添加省略号: WordEllipsis | 将线条修剪为最近的单词,并在修剪线的末尾放置省略号。 但是,我似乎无法找到这两者之间的任何区别。 这是我的测试控件的代码: public partial class UserControl1 : UserControl { public UserControl1() { InitializeComponent(); this.Text = “This it my text. It’s long enough to get cut in display.”; } protected override void OnPaint(PaintEventArgs e) { base.OnPaint(e); var flags = (this.IsWordEllipsis) ? TextFormatFlags.WordEllipsis : TextFormatFlags.EndEllipsis; TextRenderer.DrawText(e.Graphics, this.Text, […]

C#中的“设置”类

我正在使用C#和sliverlight阅读Windows Phone 7的教程,我发现了这一行 public static class Settings { public static readonly Setting IsRightHanded = new Setting(“IsRightHanded”, true); public static readonly Setting Threshold = new Setting(“Threshold”, 1.5); } 我在C#找不到Setting类我想知道它是否在特殊命名空间下或需要额外的添加引用

TreeView检查/取消检查所有子项

如何检查/取消选中TreeView中的所有子项? 当其中一个项目变为选中状态和子项目选中/未检查错误时,可能发生错误。 链接到VS 2010 Project + Exe YOUTUBE上的video private void Form1_Load(object sender, EventArgs e) { treeView1.CheckBoxes = true; treeView1.BeginUpdate(); treeView1.Nodes.Add(“1111”); treeView1.Nodes[0].Nodes.Add(“2222”); treeView1.Nodes[0].Nodes.Add(“2222”); treeView1.Nodes[0].Nodes.Add(“2222”); treeView1.Nodes[0].Nodes.Add(“2222”); treeView1.Nodes[0].Nodes[1].Nodes.Add(“3333”); treeView1.Nodes[0].Nodes[1].Nodes[0].Nodes.Add(“4444”); treeView1.Nodes[0].Nodes[1].Nodes[0].Nodes.Add(“4444”); treeView1.Nodes[0].Nodes[1].Nodes[0].Nodes.Add(“4444”); treeView1.EndUpdate(); treeView1.ExpandAll(); } private void treeView1_AfterCheck(object sender, TreeViewEventArgs e) { treeView1.BeginUpdate(); foreach (TreeNode Node in e.Node.Nodes) { Node.Checked = e.Node.Checked; } treeView1.EndUpdate(); }

如何制作委托线程STA

我看到围绕这个主题的一些讨论并得出结论认为这是不可能的。 我应该使用Threads,使它成为STA,当我需要返回结果时,将主线程与创建的线程连接起来。 这可以工作,但它不是一个理想的解决方案,因为使用委托我可以实现纯异步行为(使用回调)。 所以,在我开始实现自己的Future类之前(就像在Java中一样); 有没有更好的方法来使用代表实现这一目标? private delegate String DelegateFoo(String[] input); private String Foo(String[] input){ // do something with input // this code need to be STA // below code throws exception .. that operation is invalid // Thread.CurrentThread.SetApartmentState(ApartmentState.STA) return “result”; } private void callBackFoo(IAsyncResult iar){ AsyncResult result = (AsyncResult)iar; DelegateFoo del = (DelegateFoo)result.AsyncDelegate; String result […]

c#使用嵌入式资源中的excel文件

我正在为我的女朋友写一个评分程序,我试图将数据输出到我嵌入到程序中的excel文件中。 我目前正在写一个空白的excel文件,但是想使用预先制作的excel文件并将数据导出到适当的单元格。 我无法弄清楚如何告诉程序在资源文件夹中使用xls文件而不是制作一个空白的excel文件。 这是迄今为止保存它的代码。 我正在使用C#2008快递版。 谢谢 我的资源参考是:Properties.Resources.gradesheet Excel.Application xlApp; Excel.Workbook xlWorkBook; Excel.Worksheet xlWorkSheet; object misValue = System.Reflection.Missing.Value; xlApp = new Excel.ApplicationClass(); xlWorkBook = xlApp.Workbooks.Add(misValue); xlWorkSheet = (Excel.Worksheet)xlWorkBook.Worksheets.get_Item(1); //add data to excel xlWorkSheet.Cells[1, 1] = firstName; xlWorkSheet.Cells[2, 1] = lastName; xlWorkBook.Close(true, misValue, misValue); xlApp.Quit(); releaseObject(xlWorkSheet); releaseObject(xlWorkBook); releaseObject(xlApp);

C#GUI线程错误

我正在开发一个应该通过套接字接口接收命令然后在GUI中执行它们的应用程序。 此应用程序正在C#.NET 4.0中开发,它使用WPF作为其GUI。 套接字接口有一个工作线程,它继续监听套接字并处理其命令,因此,如果收到Show Popup命令,则工作线程调用一个管理器类,负责创建弹出窗口并在主屏幕上显示它。 创建弹出窗口然后调用主屏幕的管理器方法如下: public void ProcessPopup(PopupModel model) { switch (model.ScreenType) { case Screens.Type1: popup = new PopupType1(); break; case Screens.Type2: popup = new PopupType2(); break; case Screens.Type3: popup = new PopupType3(); break; case Screens.Type4: popup = new PopupType4(); break; } viewModel.SetModel(model); if (!Dispatcher.CurrentDispatcher.Equals(App.Current.Dispatcher)) { App.Current.Dispatcher.Invoke((ThreadStart)delegate { mainScreen.ShowPopup(popup); }); } else { mainScreen.ShowPopup(popup); […]

使用约束执行区域

我有一个Visual Studio 2008 C#.NET 3.5应用程序P / Invokes一个接受文件句柄作为参数的本机方法。 最初,我只是使用FileStream.SafeFileHandle.DangerousGetHandle()来获取文件句柄。 但是,在启用FX COP之后,我收到了CA2001的警告。 因此,经过一番研究后,我发现了“约束执行区域”。 这对我来说是新的,我还没有看到很多关于它的信息。 我希望有经验的人可以看看并validation我是否已正确完成此操作。 class MyClass { public static bool Write(string filename) { using (var fs = new System.IO.FileStream(filename, System.IO.FileMode.Create, System.IO.FileAccess.Write, System.IO.FileShare.None)) { bool got_handle; bool result; System.Runtime.CompilerServices.RuntimeHelpers.PrepareConstrainedRegions(); try { } finally { fs.SafeFileHandle.DangerousAddRef(ref got_handle); result = NativeMethods.Foo(fs.SafeFileHandle.DangerousGetHandle()); if (got_handle) fs.SafeFileHandle.DangerousRelease(); } return result; } } […]

Int 。包含在EF6中不起作用

我有一个奇怪的问题,基本上我有这个代码: var langauges = (from l in context.languages where Model.LanguageIDs.Contains(l.LanguageID) select l) .ToList(); 我不知道为什么,但我总是得到一个错误: System.NullReferenceException:未将对象引用设置为对象的实例 事情是它以前工作,但之后我将我的所有应用程序升级到MVC5和EF6,它开始崩溃这个代码。 虽然如果我检查Model.Langauges ,它有几个ID,所以没关系。 我也在高高的背景下循环。语言和所有人都有id。 我也是这样写的: var langauges = (from l in context.languages where 1==l.LanguageID select l) .ToList(); 这也工作,所以我真的不明白,我做错了什么? 任何人都可以详细说明……? 堆栈跟踪: at MySql.Data.Entity.SqlGenerator.Visit(DbPropertyExpression expression) at MySql.Data.Entity.SqlGenerator.Visit(DbInExpression expression) at System.Data.Entity.Core.Common.CommandTrees.DbInExpression.Accept[TResultType](DbExpressionVisitor`1 visitor) at MySql.Data.Entity.SqlGenerator.VisitBinaryExpression(DbExpression left, DbExpression right, String op) at MySql.Data.Entity.SqlGenerator.Visit(DbAndExpression expression) at […]