草庐IT

应不应该

全部标签

c# - 在 C# 中是否应该始终保留对正在运行的 Thread 对象的引用?

或者可以这样做吗:newThread(newThreadStart(delegate{DoSomething();})).Start();?我似乎记得在这种情况下,Thread对象会被垃圾回收,但底层操作系统线程会继续运行,直到传递给它的委托(delegate)结束。我基本上是在寻找ThreadPool功能,但不希望线程成为后台线程(即我希望它们使应用程序保持事件状态)。更新:根据Jason的说法,CLR在运行时实际上保留了对Thread对象的内部引用,因此在线程退出之前不会对其进行垃圾回收。 最佳答案 我一般发现,如果我需要像你例

c# - 我们应该在成熟的项目中开始使用 FxCop 和/或 StyleCop 吗?

我们有3年历史的解决方案(.sln)和大约20个项目(.csproj)。开始使用FxCop和/或StyleCop是否合理?也许我们应该首先将它用于几个小项目而不是整个解决方案?能看到一些有经验的回答就好了。谢谢。编辑:我们正在使用TeamCity进行持续集成。而且我们不可能使用ReSharper。:(仅限CodeRushXpress。 最佳答案 是的,你应该,但要慢慢来。获取ReSharper的副本,安装StyleCop,并获取ReSharper插件的StyleCop,设置您要使用的规则,从那时起,您打开的每个文件都会充满波浪形的蓝

c# - 在这种情况下,我们是否应该开发自定义成员资格提供程序?

总结长话短说,我们的任务是分解一个相当老旧且臃肿的asp.net应用程序的身份验证和授权部分,该应用程序以前所有这些组件都是从头开始编写的。由于我们的应用程序不是典型的应用程序,而且我们都没有使用asp.net内置成员资格提供程序的经验,我们不确定是否应该再次推出我们自己的身份验证和授权,或者我们是否应该尝试在asp.net成员(member)提供商的心态并开发我们自己的成员(member)提供商。我们的应用我们有一个相当古老的ASP.NET应用程序,它安装在客户位置,为LAN上的客户提供服务。管理员创建用户(用户无需注册),根据安装情况,我们可能会将软件与LDAP集成。目前,LDAP

c# - 我可以/应该使用隐式运算符而不是覆盖 ToString 吗?

我有一个类,我想轻松地写出字符串(例如,用于记录目的)。我可以使用隐式运算符将对象隐式转换为字符串而不是重写ToString方法吗?例如,我有一个包含姓名和年龄的Person类:publicclassPerson{publicstringName{get;set;}publicintAge{get;set;}}我可以覆盖ToString:publicoverridestringToString(){returnString.Format("Name:{0},Age:{1}",this.Name,this.Age);}或者我可以使用隐式运算符:publicstaticimplicitop

c# - 一个中间件应该总是调用下一个?

我一直在努力了解ASP.NET5管道中间件的真正工作原理。据我所知,中间件只是一个Func,它是一个指向方法的指针,该方法接收对下一个请求委托(delegate)的引用并返回一个包装下一个请求委托(delegate)的新委托(delegate)。我们当然可以使用类来表示中间件,例如:publicclassMyMiddleware{privatereadonly_next;publicMyMiddleware(RequestDelegatenext){if(next==null){thrownewArgumentNullException("next");}_next=next;}pub

c# - 异常消息应该存储在哪里

由于我不能以Microsoft作为最佳实践的示例,因为他们的异常消息出于必要而存储在资源文件中,我不得不问应该将异常消息存储在哪里。我想这可能是我想到的常见地点之一默认资源文件局部常量类常量全局异常消息类作为字符串文字内联 最佳答案 我可能会因此而被Gunicorn(好吧,被否决),但为什么不“在你创建异常的地方”?thrownewInvalidDataException("Awurblecan'tfollowaflurble");除非您要国际化异常消息(whichIsuggestyoudon't),否则您是否特别需要它们是常量等?

c# - MSI 和 EXE 安装程序有什么区别,我应该选择哪个?

这个问题在这里已经有了答案:关闭11年前。PossibleDuplicate:Whatarethespecificdifferencesbetween.msiandsetup.exefile?我正在为我的项目(C#)的新版本开发安装程序。以前,我用过InnoSetup创建用于在工作场所的其他计算机上安装我的项目的.exe文件。不过,在阅读一些教程时,我遇到了WindowsInstallerXML,它使用XML文件构建.msi安装程序。我的项目将在所有员工都可以访问的网络共享上可用,以便他们可以安装软件(我目前也在开发更新检查器).exe和.msi安装程序之间的主要区别是什么?为什么我要

c# - 你应该捕获所有异常吗?

按照目前的情况,这个问题不适合我们的问答形式。我们希望答案得到事实、引用或专业知识的支持,但这个问题可能会引发辩论、争论、投票或扩展讨论。如果您觉得这个问题可以改进并可能重新打开,visitthehelpcenter指导。关闭10年前。这不是“如何捕获所有异常”而是“你应该捕获所有异常”吗?在C#.NET中,我注意到了大量的异常。计划捕获每个异常是否可取?例如,DirectoryInfo()构造函数抛出4个异常。我应该计划捕捉这些还是只捕捉我能处理的那些?也许让其他人冒泡到Main()那里我有一个包罗万象的东西,然后告诉用户有一个未捕获的异常。对于所有这些可能的异常,您的代码似乎比实际

c# - 只读结构在数组中时是否应该是不可变的?

(注意:此示例代码需要C#7.2或更高版本,以及NugetSystem.Memory程序包。)假设我们有一个只读结构,如下所示:publicreadonlystructTest{publicTest(intvalue){Value=value;}publicintValue{get;}}现在让我们把它放到一个数组中:vararray=newTest[]{newTest(1)};Console.WriteLine(array[0].Value);//Prints1到目前为止一切顺利。您不能编写代码直接修改array[0].Value。现在假设我们这样做:array.AsSpan().As

c# - 什么时候应该以 TaskScheduler.Current 作为参数调用 Task.ContinueWith?

我们正在使用thiscodesnippet从StackOverflow生成一个任务,该任务在任务集合中的第一个任务成功完成后立即完成。由于其执行的非线性特性,async/await并不是真正可行的,因此此代码改用ContinueWith()。不过,它没有指定TaskScheduler,它是numberofsources已经提到可能是危险的,因为它使用TaskScheduler.Current而大多数开发人员通常期望来自延续的TaskScheduler.Default行为。普遍的看法似乎是您应该始终将显式的TaskScheduler传递给ContinueWith。但是,我还没有看到关于何