Tag: c#

使用条件(三元)运算符分配lambda表达式

我试图使用条件(三元)运算符将适当的lambda表达式分配给变量,具体取决于条件,但我得到编译器错误: 无法确定条件表达式的类型,因为’lambda表达式之间没有隐式转换’和’lambda表达’ 。 我可以使用常规的if-else来解决这个问题,但是条件运算符对我来说更有意义(在这个上下文中),会使代码更简洁添加,至少,我想知道它为什么没有的原因’工作。 // this code compiles, but is ugly! 🙂 Action hh; if (1 == 2) hh = (int n) => Console.WriteLine(“nope {0}”, n); else hh = (int n) => Console.WriteLine(“nun {0}”, n); // this does not compile Action ff = (1 == 2) ? (int n) => Console.WriteLine(“nope {0}”, n) : (int […]

在WPF应用程序中导致UI内存泄漏的ICommand绑定

我正在构建一个使用LINQ to SQL连接到SQL Server数据库的WPF应用程序。 应用程序的主窗口包含一个包含一系列详细视图的ListView 。 ListView的ItemSource绑定到作为根视图模型上的属性公开的详细视图模型对象的集合。 每个详细视图模型对象组成多个ICommand属性以及公开详细模型对象的属性,该属性又公开UI中显示的各种数据字段。 使用ANTS内存分析器进行分析表明,泄漏的对象是详细模型对象中包含的对象,以及它们绑定到的一些UI类。 以前刷新的这些对象的实例不是垃圾回收。 ANTS有一个工具,允许用户跟踪引用链,以确定保留不需要的内存的原因。 当我使用它时,我发现所有出现的链都有一个ICommand 。 因此,我删除了有问题的ICommand ,发现内存泄漏消失了。 不幸的是,我需要ICommand来实现一些重要的function。 让我感到困惑的是它首先如何引用细节模型对象 – 它们是详细视图模型对象中的两个完全独立的实例变量。 这是详细视图模型对象的构造函数(对RootViewModel的引用用于连接到ICommands的一些方法中的回调。我原先怀疑这可能导致一个循环的引用链,这可能是导致问题,但删除它似乎没有任何影响。) public CarDataViewModel(CarData carDataItem, RootViewModel parentViewModel) { _parentViewModel = parentViewModel; CarDataModel = carDataItem; CompetingCheckboxStatus = CarDataModel.CurrentCar.Competing; AcknowledgeAlarm = new ParameterlessCommand(AcknowledgeAlarmClicked); Acknowledge = new ParameterlessCommand(AcknowledgeClicked); ShowReport = new ParameterlessCommand(ShowReportClicked); Cancel = new ParameterlessCommand(CancelClicked); } 这里是设置绑定的xaml – AcknowledgeAlarm是ICommand,CarDataModel是详细模型对象: […]

连接到SQL Server群集的字符串

任何人都可以指点我或告诉我如何将连接字符串写入SQL Server集群实例? 我想建立与SQL Server群集的特定实例的数据库(初始目录)的可信连接。 我找了很长时间但找不到谷歌的正式答案。 我要求C#ADO.Net代码的连接字符串。 我知道如何将连接字符串写入普通的单机非群集SQL Server实例。

如何将列表转换为多维数组?

我有以下方法签名: public void MyFunction(Object[,] obj) 我创建了这个对象: List<List> obj = new List<List>; 有没有一种简单的方法可以将其转换为Object[,] ? 更新: 事实是我喜欢使用List因为我可以轻松添加一个新项目。 有没有办法可以声明我的List对象以满足这种需要? 我知道Object[,]的列数Object[,]但不知道行数。

如何使用DataContext.ExecuteQuery返回的未知类型的对象

因此,随着C#4.0中dynamic关键字的出现,我希望我能找到一个更好的解决方案来解决在选择任意列时处理DataContext.ExecuteQuery返回的类型的问题。 在过去,我创建了一个新类型来保存此类查询的结果,或者使用此SOpost中描述的方法。 所以,既然我能够处理在.NET 4.0下运行的新项目,我就开始尝试使用动态类型以一种不太痛苦的方式完成同样的事情。 所以,我给了这个镜头: var result = _db.ExecuteQuery( “SELECT CustomerID,City FROM Customers”, new object[0] ); foreach( var d in result ) { MessageBox.Show( String.Format( “{0}, {1}”, d.CustomerID, d.City ) ); } 在运行时抛出exception,因为动态对象的属性CustomerID不存在。 所以,由于我在这一点上对动态关键字的体验是零(文章/博客文章或两篇,没有真正的经验),我希望有人在这里可以让我知道我在这里尝试做什么甚至是可能的。 我可能高估了ExecuteQuery背后的“魔法”数量,但我认为这可能是由于在幕后完成的属性映射。 任何帮助深表感谢。

将字符串强制为2位小数

我有一个显示双重的转发器项目。 偶尔双重似乎出现了像小编这样的1165.833。 我试图通过将其包装在string.format方法中来强制它到两位小数,但它仍然是相同的: 任何想法为什么?

从链式任务中观察

我正在尝试创建一个Observable,其中每个项目都是通过异步任务生成的。 下一项应该通过对前一项结果的异步调用(共同递归)生成。 在“生成”这个用语中,这看起来像这样 – 除了Generate不支持异步 (它也不支持初始状态的委托)。 var ob = Observable.Generate( async () => await ProduceFirst(), // Task ProduceFirst() prev => Continue(prev) // bool Continue(T); async prev => await ProduceNext(prev) // Task ProduceNext(T) item => item ); 作为一个更具体的示例,要通过一次获取100条消息来查看ServiceBus队列中的所有消息,请按如下方式实现ProduceFirst,Continue和ProduceNext: Task<IEnumerable> ProduceFirst() { const int batchSize = 100; return _serviceBusReceiver.PeekBatchAsync(batchSize); } bool Continue(IEnumerable prev) { return prev.Any(); } […]

MVC RoleProvider和Authorize属性

我已经实现了自己的角色提供程序,而我没有使用默认的角色提供程序。 它的工作原理是,它可以告诉某人应该或不应该能够查看某个页面。 但是,它可以执行以下操作: 如果用户未登录,请重定向到我的登录页面 如果用户已登录但没有正确的角色,请重定向到其他页面 我还没有弄清楚如何使用Authorize属性执行此操作,我只有: [Authorize(Roles=”Admin”)] 基本上我需要根据授权的哪个部分失败重定向到不同的页面。 我看看它是否是web.config中的东西,但没有明显的跳出来。

asp / .net / mvc中Datatype.EmailAddress的使用

我有一个帐户模型,我在其中使用电子邮件地址作为用户名 public class RegisterModel { [Required] [Display(Name = “Email Address”)] [DataType(DataType.EmailAddress)] public string UserName { get; set; } 我设计了一个自定义类来validation电子邮件。 但我最近注意到了DataType.EmailAddress 。 我尝试使用上面代码中显示的此数据类型来检查我是否可以在没有我的自定义类的情况下validation用户名但是它失败了。 所以我的问题是这个DataType在.NET是如何有用的。 它似乎在我的注册表上无所作为。 编辑:它甚至可以validation正则表达式。 例如,用户名: SS, ssssss, tttt, etc作为有效电子邮件传递。 编辑:人我有一个类来validation后面的代码中的电子邮件。 我知道帽子是validation电子邮件的复杂性。 我不是问如何validation电子邮件。 我只是问这个数据类型的用法。

Thread.Sleep(1)花费超过1ms

我搜索了这个问题,但没有看到答案。 如果它是重复的,我很乐意关闭它。 我目前正在尝试对某项技术进行一些性能评估,并看到一些相当令人难以置信的结果,所以我决定尝试一些。 在那我想试着看看秒表类是否正在回归我的预期。 Stopwatch sw = Stopwatch.StartNew(); Thread.Sleep(1); sw.Stop(); Console.WriteLine(sw.ElapsedMilliseconds); 在这种情况下,我几乎看到了15毫秒的返回值。 我理解DateTime的分辨率在那附近但是不应该Thread.Sleep(1)睡一个线程1ms? 我所使用的系统返回Stopwatch.IsHighResolution true并在.NET 4中运行。 背景:此代码以完整和正确的forms用于收集有关Aerospike db get请求的一些数字。 数据库不在同一个盒子里。 当我在查询处于中间时打印出sw.ElapsedMilliseconds时,我看到的主要是亚毫秒响应,这听起来有点怀疑,考虑到我的Java等效代码在大多数情况下返回更加可信的5ms-15ms响应。 Java代码使用System.nanoTime()的区别。 通过我的C#代码中的submilli响应,我的意思是Console.WriteLine(sw.ElapsedMilliseconds)打印0。