草庐IT

不必要

全部标签

c# - 表达式树 - 不必要的转换为 int32

在处理字节和短裤时,表达式树似乎构建了一个不必要的转换,它们将两边(例如二进制表达式)转换为int32。这是我见过的一些Linq提供程序中的一个问题,每个提供程序都必须剥离这个冗余层才能获得原始表达式。(NHibernate不会删除这一层并在SQL查询中创建一个糟糕的CAST)。//noconversionConsole.WriteLine((Expression>)((s,s1)=>s==s1));//convertstoint32Console.WriteLine((Expression>)((s,s1)=>s==s1));//convertstoint32Console.Writ

c# - 当另一个线程/进程不必要地使用独占锁时,是否可以绕过 C# 中的文件锁?

有没有办法在不终止线程的情况下绕过或删除另一个线程持有的文件锁?我正在我的应用程序中使用第三方库,该库对文件执行只读操作。我需要第二个线程同时读取文件以提取第三方库未公开的一些额外数据。不幸的是,第三方库使用读/写锁打开了文件,因此我得到了通常的“该进程无法访问该文件......因为它正在被另一个进程使用”的异常。我想避免用我的线程预加载整个文件,因为文件很大,会导致加载此文件时不必要的延迟和过多的内存使用。由于文件的大小,复制文件不切实际。在正常操作期间,两个线程访问同一个文件不会导致任何严重的IO争用/性能问题。我不需要两个线程之间完美的时间同步,但它们需要在彼此的半秒内读取相同的

c# - 使用后是否有必要处理 DbCommand?

我们使用EnterpriseLibrary3.0访问OracleDB(MicrosoftOracle客户端)。如果在调用存储过程或函数后不释放DbCommand实例,会发生什么情况?.NET会自动对它们进行垃圾回收吗?请注意,我们会确保事务/连接得到关闭并妥善处理。 最佳答案 这是副本,但我没有时间找到原件。如果它实现了IDisposable,并且您创建了它,那么您需要对其调用Dispose。这就是该类的开发人员使其实现IDisposable的原因。垃圾收集器不会对所有IDisposable实现对象调用Dispose。

c# - LINQ 的问题 - 有必要添加对不需要的库的引用

我有以下问题。我有一个包含大约40个项目的解决方案。有一个项目A引用项目B,项目B引用项目C。项目A中没有任何代码使用项目C中的类。但是,如果我在任何代码中使用任何LINQ扩展方法,例如:varr=newint[]{1,2,3}.Where(a=>a>1);我得到编译器错误:somefile.cs(70,13):errorCS0012:Thetype'XXX'isdefinedinanassemblythatisnotreferenced.Youmustaddareferencetoassembly'ProjectCassemblyname,Version=0.0.0.0,Cultur

c# - 在 .NET 应用程序中删除不必要的 namespace 的方法?

有没有办法从类中删除不必要的“using”语句?例如,我可能有一个复杂的类,我可以在其中添加自己的命名空间,但也有一些命名空间是由VisualStudio自动添加的,我也可能正在使用它们:usingSystem;usingSystem.Collections.Generic;usingSystem.IO;usingSystem.Linq;usingSystem.Net;usingSystem.Windows.Navigation;usingSystem.IO.IsolatedStorage;usingMicrosoft.Phone.Shell;usingSystem.Net.Netwo

c# - 为什么 linq-2-sql 会创建额外的不必要的对象?

我在数据库中有一个简单的父子表CREATETABLE[Parent]([Id][int]IDENTITY(1,1)NOTNULL,[Name][nvarchar](256)NOTNULL)ALTERTABLE[Parent]ADDCONSTRAINT[PK_Parent_Id]PRIMARYKEY([Id])CREATETABLE[Child]([Id][int]IDENTITY(1,1)NOTNULL,[ParentId][int]NOTNULL,[Name][nvarchar](256)NOTNULL)ALTERTABLE[Child]ADDCONSTRAINT[PK_Child_

c# - 为什么不必初始化数组中的结构?

我研究了这个主题,但找不到任何重复项。我想知道为什么您可以在数组中使用struct而无需创建它的实例。例如,我有一个类和一个结构:publicclassClassAPI{publicMeshmesh{get;set;}}publicstructStructAPI{publicMeshmesh{get;set;}}当在数组中使用ClassAPI时,必须先使用new关键字对其进行初始化,然后才能使用其属性和方法:ClassAPI[]cAPI=newClassAPI[1];cAPI[0]=newClassAPI();//MUSTDOTHIS!cAPI[0].mesh=newMesh();但是

c# - 数组(结构类型)上的 Where 是否经过优化以避免不必要的结构值复制?

出于内存性能的原因,我有一个结构数组,因为项目的数量很大,并且项目会定期被抛出,因此会扰乱GC堆。这不是我是否应该使用大型结构的问题;我已经确定GC垃圾处理会导致性能问题。我的问题是当我需要处理这个结构数组时,我应该避免使用LINQ吗?由于结构不小,按值传递它是不明智的,而且我不知道LINQ代码生成器是否足够智能以执行此操作。结构如下所示:publicstructManufacturerValue{publicintManufacturerID;publicstringName;publicstringCustomSlug;publicstringTitle;publicstringD

c# - 等待最后一次时不必要的异步/等待?

我最近一直在处理asyncawait(阅读所有可能的文章,包括Stephen和Jon的最后两章),但我已经得出结论,但我不知道它是否是100%正确。-因此我的问题。因为async只允许出现await这个词,所以我将把async放在一边。AFAIU,等待就是延续。与其编写功能性(连续)代码,不如编写同步代码。(我喜欢将其称为可回调代码)因此,当编译器到达await时-它会将代码拆分为2个部分,并注册第二部分以在第一部分完成后执行(我不知道为什么这个词未使用callback-这正是完成的操作)。(同时工作-线程回来做其他事情)。但是看看这段代码:publicasyncTaskProcess

c# - 在什么情况下有必要脱离事件?

我不确定我是否完全清楚附加到对象中事件的含义。这是我目前的理解,无论是正确的还是详尽的:1。附加到本地类事件不需要分离例子:this.Closing+=newSystem.ComponentModel.CancelEventHandler(MainWindow_Closing);公共(public)事件EventHandlerOnMyCustomEvent=delegate{};我假设当您的对象被释放或被垃圾回收时,函数会被释放并自动与事件分离。2。附加到您不再需要的对象(=null;)必须从中分离例子:附加到计时器的Elapsed事件,您只响应一次。我假设您需要将Timer存储在局部