整数数组作为键的字典

我需要一个Dictionary,其键是一个整数数组,例如Dictionary或 Dictionary<List,string>. 但我很惊讶Equality方法和哈希码方法没有为我定义。 除了创建我自己的MyType: List并定义所有必要的方法之外,有没有简单的方法来实现这样的结构?

Redis Stack Exchange如何通过模式删除或获取密钥

我在C#中安装了Stack Exchange redis客户端。 我只能删除一个键或一组键,但我不知道如何删除带前缀的键。 或者另一种解决方案可以是先按模式获取所有密钥然后删除它们。 但我不知道如何按模式获取密钥。

ASP.NET MVC消息处理程序与Web API消息处理程序

我创建了2个项目: 正常的,基本的ASP.NET MVC 4应用程序 基本的ASP.NET WebAPI应用程序 我做的是我添加了自定义消息处理程序,从DelegatingHandler派生到它们。 这里是: public class MyHandler : DelegatingHandler { protected override Task SendAsync(HttpRequestMessage request, System.Threading.CancellationToken cancellationToken) { return base.SendAsync(request, cancellationToken); } } 我在global.asax中注册了它们: GlobalConfiguration.Configuration.MessageHandlers.Add(new MyHandler()); 我给了一个断点 return base.SendAsync(request, cancellationToken); ASP.NET MVC和ASP.NET WebAPI之间的区别在于,当我调用ASP.NET MVC应用程序( http://localhost:4189/Something )时,不会触发断点 。 然而,当我调用Web API( http://localhost:7120/api/values )时, 会触发断点。 这是为什么? 那些应用程序类型执行流程有什么不同吗? 另外,当我尝试请求普通的Controller ,而不是ApiController应用程序的ApiController,如http://localhost:7120/Home , 不会触发断点。

在MVC5中指定日期格式(dd / MM / yyyy)

我正在尝试处理日期值的用户输入,我想提示用户以这种格式输入日期:dd / MM / yyyy 我试图做的: 我在这个问题中阅读并实现了Darin的答案: 在asp.net mvc 4中格式化日期时间 这是我的实现: 在Global.asax中 (ControllerContext controllerContext, ModelBindingContext bindingContext) { var displayFormat = bindingContext.ModelMetadata.DisplayFormatString; var value = bindingContext.ValueProvider.GetValue(bindingContext.ModelName); if (!string.IsNullOrEmpty(displayFormat) && value != null) { DateTime date; displayFormat = displayFormat.Replace (“{0:”, string.Empty).Replace(“}”, string.Empty); if (DateTime.TryParse(value.AttemptedValue, CultureInfo.InvariantCulture, DateTimeStyles.None, out date)) { return date; } else { bindingContext.ModelState.AddModelError( bindingContext.ModelName, string.Format(“{0} […]

如何将多个方法(带参数)作为参数传递?

假设我有以下WCF代码: try { ServiceClient proxy = new ServiceClient(); proxy.ClientCredentials.UserName.UserName = “user”; proxy.ClientCredentials.UserName.Password = “password”; proxy.GetData(2); if (proxy.State = CommunicationState.Opened) { proxy.GetData(“data”); } proxy.Close(); } catch (FaultException ex) { // handle the exception } 而且由于我注意到try … catch和其他逻辑是重复的,更不用说设置WCF调用是昂贵的,我想向这个函数发送许多“方法和参数”。 实质上将GetData(2)和GetData(“data”)作为方法数组传递,并使结果异步或同步返回。 我怎么做到这一点? 我想我可以有两个’ref’对象来处理结果[]和对结果[]的共享锁。 但是我不确定如何将“带参数的方法”作为参数传递给另一个函数。 也许另一种看待它的方法可能是一个函数指针数组,使用不同的参数来表示相同的函数。 任何人都可以推动我做正确的方法吗? 更多信息: 我问这个问题所以我可以优化这种方法来处理WCFexception和重试,但所以我不必总是在每次调用后打开/关闭客户端。

正则表达式将单词与+(加号)符号匹配

我花了一些时间,但还是要解决。 我需要能够在字符串中匹配带有符号的单词(如c ++)的正则表达式。 我使用了/\bword\b/ ,对于“通常”的单词,它工作正常。 但是一旦我尝试/\bC\+\+\b/它只是不起作用。 它有些与加号的错误有关。 我需要一个正则表达式来检测输入字符串是否包含c ++单词。 输入像, “c++ developer” “using c++ language” 等等 PS。 使用C#,。Net Regex.Match函数。 感谢帮助!

使用C#.NET 3.5 WinForms进行部分透明化?

我正在制作一个.NET 3.5应用程序,其表单绘制部分透明的黑色背景。 我正在重写OnPaintBackground来实现这个目标: protected override void OnPaintBackground( PaintEventArgs e ) { using ( Brush brush = new SolidBrush( Color.FromArgb( 155, Color.Black ) ) ) { e.Graphics.FillRectangle( brush, e.ClipRectangle ); } } 它可以工作,但偶尔表格会在不清除屏幕的情况下自行绘制,使透明度比应有的更深。 我曾尝试使用Graphics.Flush()和Graphics.Clear() ,但它无法帮助或完全删除透明度。 有什么建议? 编辑:在左侧启动应用程序后,以及在右侧重新绘制表单几次(以响应从一个控件到另一个控件的选项卡)后,它的外观如下: 透明度问题http://www.quicksnapper.com/files/5085/17725729384A10347269148_m.png 编辑2:我今天早上尝试了一些事情并注意到当透明部分后面的桌面发生变化时,实际上并没有重新绘制。 例如,如果我打开任务管理器并将其放在窗口后面,您就不会看到它自己刷新。 这与我在透明度水平上所看到的一样有道理。 是否有一个function可以让Windows重绘窗口后面的区域? 编辑3:我尝试更改窗体上的一些属性,但它们都导致窗体绘制非透明黑色: this.AllowTransparency = true; this.DoubleBuffered = true; this.Opacity = .99; 我将尝试为透明部分创建一个单独的窗口,如上所述,但仍然欢迎任何其他想法。

更改文本框文本而不触发TextChanged事件

我在C#中的应用程序有一个带有txt_TextChanged事件的Textbox 。 private void txt_TextChanged(object sender, EventArgs e) { //Do somthin } 但是有一个特定的部分我想在不触发txt_TextChanged事件的情况下更改txt.Text 。 txt.Text =”somthing” //Don’t fire txt_TextChanged 我怎样才能做到这一点?

Monitor.Enter和Monitor.Exit在不同的线程中

Monitor.Enter和Monitor.Exit旨在从同一个线程调用。 但是,如果我需要在一个不同于获得的线程中释放锁定怎么办? 例如:存在使用此资源的共享资源和异步操作。 操作从BeginOperation开始,并获取共享资源上的锁定。 还有释放锁的EndOperation方法。 EndOperation通常在回调的另一个线程中调用,因此我无法在EndOperation方法中调用Monitor.Exit 。 在这种情况下,最好的方法是什么? 用AutoResetEvent而不是Monitor来仔细检查锁定是一个很好的解决方案吗?

List operator ==在C#语言规范版本4中

在C#语言规范版本4中,1.6.7.5运算符是有关List运算符的信息: ==和!= 。 但我找不到List定义的运算符? 我错过了什么吗? 1.6.7.5运算符的示例代码: List a = new List(); a.Add(1); a.Add(2); List b = new List(); b.Add(1); b.Add(2); Console.WriteLine(a == b); // Outputs “True” => here I get False as well b.Add(3); Console.WriteLine(a == b); // Outputs “False”