草庐IT

应不应该

全部标签

c# - 返回 Task 的方法应该抛出异常吗?

返回Task的方法有两个报告错误的选项:立即抛出异常返回将异常结束的任务调用者是否应该期望两种类型的错误报告,或者是否有一些标准/协议(protocol)将任务行为限制为第二种选择?例子:classPageChecker{TaskCheckWebPage(stringurl){if(url==null)//ArgumentcheckthrowException("BadURL");//Someothersynchronouscheckif(!HostPinger.IsHostOnline(url))throwException("Hostisdown");returnTask.Fact

c# - 应该避免 IEnumerable 的 Count() 吗?

通常,我使用List,然后在我不再需要更新它们时将它们作为IEnumerable返回。但是,我遇到了一个问题,我实际上需要枚举它们但首先需要知道计数。IEnumerable会枚举每个项目并找到计数(O(N)),还是会依赖于List的Count属性(O(1))?此外,如果IEnumerable是LINQ查询的结果怎么办? 最佳答案 WillIEnumerableenumerateeveryitemandfindthecount(O(N)),orwillitrelyonList'sCountproperty(O(1))?它将使用Coun

c# - 什么时候应该在 WCF 服务中使用 OperationContextScope?

我目前正在开发一个WCF服务,该服务可以连接到另一个服务以在其一些操作中提交信息。第二个服务的代理是通过强类型ProxyFactory生成的类(class)。我没有遇到任何问题,但听说我应该在调用电话时执行以下操作:using(newOperationContextScope((IContextChannel)_service))_service.Send(message);所以我的问题是:什么时候创建这个新的OperationContextScope合适,为什么?谢谢! 最佳答案 如果您正在使用回调或者如果您想要修改消息或head

c# - 我应该使用 Entity Framework 、数据集还是自定义类?

我真的很难过。我需要设计一个将使用WCF作为通信channel的“桌面应用程序”。它是一个多层应用(DB和应用服务器是一样的,客户端通过互联网云)。该应用程序比通常的LOB应用程序有点复杂(在SQL和代码逻辑方面),但概念是相同的:从DB读取、更新到DB、处理并发等。我的问题是现在使用Entity开放的框架,我无法决定采用哪种方式:我应该使用EntityFramework、数据集还是自定义类。正如我对EntityFramework的理解,它将创建我的数据库表的对象映射以及CRUD脚本。这对于简单的CRUD来说很好,但大多数时候“选择”很复杂,它需要自定义SQL。我知道我可以在EF中使用

c# - 我应该为包含 10 个或更少项目的集合使用字典,还是有更好的选择?

我有一个对象列表,我需要尽快找到一个对象(通过它的名称属性)。我应该使用什么数据结构?我知道我可以使用字典,但列表中的项目永远不会超过10个,如果我没记错的话,如果集合包含10个或更少的项目,字典将实现为一个数组。谢谢。 最佳答案 MSDN推荐ListDictionary对于包含10个或更少项目的集合:ThisisasimpleimplementationofIDictionaryusingasinglylinkedlist.ItissmallerandfasterthanaHashtableifthenumberofelement

c# - 您可以在代码中执行 NetTcpBinding 吗?你应该?

这里是WCF新手...我正在尝试使用NetTcpBinding自托管WCF服务。基于MSDN"how-to"tutorial我已经完成了代码中的所有绑定(bind),然后我将其从WsHttpBinding更改为NetTcpBinding,现在看起来像这样:varbaseAddress=newUri("net.tcp://localhost:8000/MyWebService");varselfHost=newServiceHost(typeof(ConcreteWebService),baseAddress);try{varbinding=newNetTcpBinding();bind

c# - 要比较 double 和十进制,我应该将 double 转换为十进制还是将十进制转换为 double ?

我需要比较两个值。一个值是price这代表某物的当前价格等等decimal因为您实际上可以按照这个价格买卖东西。另一个值是estimatedPrice这是数学计算的结果,所以double因为它只是estimation你实际上不能通过这个esitmatedPrice做任何“操作”现在我想买如果price.那么我应该将price转换为double还是将estimatedPrice转换为decimal?我知道在转换后我会得到“略微不同”的数字,但似乎我没有其他选择。 最佳答案 这取决于数据。十进制具有更高的精度;double的范围更大。如

c# - 什么时候应该覆盖 OnEvent 而不是在继承时订阅事件

什么时候应该做以下事情?classFoo:Control{protectedoverridevoidOnClick(EventArgse){//newcodehere}}与此相反?classFoo:Control{publicFoo(){this.Click+=newEventHandler(Clicked);}privatevoidClicked(objectsender,EventArgse){//code}} 最佳答案 覆盖而不是附加委托(delegate)将产生更高效的代码,因此通常建议您始终尽可能这样做。有关详细信息,请参

c# - 如果分配了相同的值,setter 是否应该立即返回?

在实现INotifyPropertyChanged的​​类中,我经常看到这种模式:publicstringFirstName{get{return_customer.FirstName;}set{if(value==_customer.FirstName)return;_customer.FirstName=value;base.OnPropertyChanged("FirstName");}}准确的线条if(value==_customer.FirstName)return;打扰我了。我经常这样做,但我不确定它是否需要也不是很好。毕竟,如果调用者分配了完全相同的值,我不想重新分配该字

c# - 错误处理 我应该抛出异常吗?还是源头处理?

我有这种格式asp.netMVCView->服务层->存储库。因此View调用服务层,其中包含业务/验证逻辑,后者又调用存储库。现在我的服务层方法通常有一个bool返回类型,这样我就可以在数据库查询成功时返回true。或者如果它失败了。然后向用户显示一条通用消息。我当然会用elmah记录错误。但是我不确定我应该如何做到这一点。像现在一样,我的存储库有用于更新、创建、删除的void返回类型。也就是说,如果更新失败,我是否应该在我的存储库中有一个try/catch来抛出错误,然后我的服务层会捕获它并发出elmah信号并返回false?或者我应该让这些存储库方法返回一个“bool”,尝试/捕