草庐IT

c# - 锁定对 bool 的访问是必需的还是 Overkill

我有一个主要设计为POCO类的类,有各种线程和任务可以读取它的值,只有其他人只是偶尔更新这些值。这似乎是ReaderWriterLockSlim的理想方案。问题是,在类中,如果需要线程安全的属性,如果属性是bool,是不是有点大材小用了?如果它是一个int会怎样?日期时间?publicclassMyClass{privatebool_theValue=false;privateReaderWriterLockSlim_theValueLock=newReaderWriterLockSlim();publicboolTheValue{get{boolreturnVal=false;try

c# - 我应该抛出自己的 ArgumentOutOfRangeException 还是让一个气泡从下面向上冒?

我有一个包装List的类我有通过索引方法获取值:publicRenderedImageInfoGetValue(intindex){list[index].LastRetrieved=DateTime.Now;returnlist[index];}如果用户请求超出范围的索引,这将抛出ArgumentOutOfRangeException。我应该让这种情况发生,还是检查它然后扔掉我自己的?即publicRenderedImageInfoGetValue(intindex){if(index>=list.Count){thrownewArgumentOutOfRangeException(

c# - 没有参数的 Event 应该定义自己的自定义 EventArgs 还是简单地使用 System.EventArgs?

我有一个当前定义的没有事件参数的事件。即它发送的EventArgs是EventArgs.Empty。在这种情况下,最简单的方法是将我的事件处理程序声明为:EventHandlerMyCustomEvent;我不打算向该事件添加任何事件参数,但将来可能需要更改任何代码。因此,我倾向于让我的所有事件始终创建一个从System.EventArgs继承的空事件参数类型,即使当前不需要事件参数。像这样:publicclassMyCustomEventArgs:EventArgs{}然后我的事件定义变成如下:EventHandlerMyCustomEvent;所以我的问题是:定义我自己的MyCus

c# - 字典、列表还是数组?

关闭。这个问题需要更多focused.它目前不接受答案。想改进这个问题吗?更新问题,使其只关注一个问题editingthispost.关闭8年前。Improvethisquestion我正在编写一项性能至关重要的服务,但我不确定什么是最快的。我有几个对象(50-200),每个对象都有一个ID(整数,例如84397或23845)。拥有一个字典、一个键值对列表或一个索引设置为ID的列表,其余的具有空值或具有相同想法的数组会更快吗?

c# - .net 中的垃圾收集器是系统范围的还是应用程序范围的?

在与同事的讨论中,我怀疑.net中的垃圾收集器是在系统范围内工作还是在应用程序范围内工作。意味着如果每个应用程序都有自己的GC那么它会影响系统性能吗?我对此有点困惑。 最佳答案 每个进程都有自己的托管堆,将单独收集。没有系统范围的堆,所以不可能有系统范围的GC。(如果您在同一个进程中运行多个CLR,它们每个也会有自己的GC。不过这种情况非常罕见。) 关于c#-.net中的垃圾收集器是系统范围的还是应用程序范围的?,我们在StackOverflow上找到一个类似的问题:

c# - 我应该将电话号码存储为字符串还是整数?

这个问题在这里已经有了答案:What'stherightwaytorepresentphonenumbers?(9个回答)关闭9年前。我正在尝试决定是将电话号码存储为string还是int。有什么想法吗?

c# - 将文件名传递给方法时,我应该使用 FileInfo 还是普通文件名?

好吧,标题说明了一切。将文件名传递给方法时,我应该使用FileInfo对象还是普通文件名(字符串)?为什么我更喜欢其中之一?我的一些同事喜欢这样写方法:无效导出(文件信息文件信息)是否优于:voidExport(字符串文件名)谢谢! 最佳答案 我通常只使用string-在大多数情况下它更简单。否则,您可能首先从字符串创建一个新的FileInfo。如果您正在创建该方法,您始终可以提供重载以允许这两种方法。当然,如果您知道要在何处调用它,您通常FileInfo而不是string,那是另一回事。我可以理解您同事的观点-在某些方面,File

c# - 我可以确定 KeyEventArg 是字母还是数字吗?

有没有办法确定KeyEventArgs中的键是否为字母/数字(A-Z、0-9)?还是我必须自己做?我找到了e.KeyCode的方法,准确吗?if(((e.KeyCode>=Keys.A&&e.KeyCode=Keys.D0&&e.KeyCode=Keys.NumPad0&&e.KeyCode 最佳答案 您可以使用char.IsLetterOrDigit()KeyCode上的方法事件参数:boolisLetterOrDigit=char.IsLetterOrDigit((char)keyEventArgs.KeyCode);

c# - 接口(interface)还是抽象类?

对于我的新宠物项目,我有一个设计问题,这个问题已经确定了,但我也想就此提出一些其他意见。我有两个类(简化):classMyObject{stringname{get;set;}enumrelation{get;set;}intvalue{get;set;}}classMyObjectGroup{stringname{get;set;}enumrelation{get;set;}intvalue{get;set;}Listmyobjects{get;set;}}稍后在项目中MyObjectGroup和MyObject应该被同等使用。为此,我可以采用两种方式:创建接口(interface)

c# - 方法声明的返回类型应该是接口(interface)还是具体类?

在一般情况下,接口(interface)或抽象类通常是合适的决定,对吗?但在某些情况下,具体类看起来更好。例如,publicstringReplace(stringold,stringnew)String的Replace方法返回一个具体类。(这只是一个例子,虽然String没有实现任何接口(interface)。)我的问题是什么时候返回接口(interface),什么时候返回具体类?它是返回接口(interface)的程序的一部分,而不是实现吗? 最佳答案 视情况而定。这个问题我已经看过好几次了,这里有一个很好的例子来说明“视情况而