草庐IT

c# - 如何在 .NET 4.x 中强制进行完全垃圾回收?

我对.NET4.x中的WeakReferences有疑问,我正在运行测试以确保不再引用某些对象(使用Wea​​kReferences),我注意到该行为在框架版本之间不一致:usingSystem;usingSystem.Text;usingNUnit.Framework;[TestFixture]publicclassWeakReferenceTests{[Test]publicvoidTestWeakReferenceIsDisposed(){WeakReferenceweakRef=newWeakReference(newStringBuilder("Hello"));GC.Col

c# - 如何在 C# 中强制使用方法的返回值?

我有一个用流利语法编写的软件。方法链有一个明确的“结尾”,在此之前代码中实际上没有做任何有用的事情(想想NBuilder,或者Linq-to-SQL的查询生成实际上并没有访问数据库,直到我们使用ToList()遍历我们的对象).我遇到的问题是其他开发人员对代码的正确使用感到困惑。他们忽略了调用“结束”方法(因此从未真正“做任何事”)!我对强制使用我的一些方法的返回值感兴趣,这样我们就永远不会在不调用“Finalize()”或“Save()”的情况下“结束链”实际完成工作的方法。考虑以下代码://The"factory"classtheuserwillbedealingwithpubli

c# - 单击鼠标绘制一个矩形

我可以用鼠标点击画一个矩形吗?到目前为止,我的代码无法正常工作。你能帮帮我吗?privatevoidpanel1_MouseClick(objectsender,MouseEventArgse){Graphicsg=this.CreateGraphics();Penpen=newPen(Color.Black,2);g.DrawRectangle(pen,100,100,100,200);} 最佳答案 编辑版本:没有太多假设你想做什么:privatevoidpanel1_Click(objectsender,EventArgse){

c# - 我可以在 c# .NET 中强制使用 'this' 关键字吗?

有没有办法在引用当前实例成员时在VisualStudio中强制使用this关键字?构造函数中存在错误的示例:classMyClass{publicobjectFoo{get;set;}publicMyClass(objectfoo){Foo=Foo;//thisshouldofcoursebelowercasebutit'seasytomiss}}此代码稍后可能会在某处生成臭名昭著的“对象引用未设置为对象的实例”异常。如何让它工作但仍然很容易错过:classMyClass{publicobjectFoo{get;set;}publicMyClass(objectfoo){Foo=foo

c# - 从程序集中强制卸载 DLL

我正试图从我的.NET进程中卸载一个行为异常的第三方DLL,因为它似乎导致了一个问题,这个问题总是可以通过重新启动我的应用程序来解决。我不想重新启动应用程序,而是想删除并重新加载DLL。DLL正在使用LoadLibrary加载并使用FreeLibrary删除(使用从P/Invoke网站获取的DllImport)。当我调用LoadLibrary()时,我看到DLL出现在ProcessExplorer的DLL列表中,而当我调用FreeLibrary()时,我看到DLL从列表中消失DLL-正如预期的那样。但是,一旦我调用了第三方库的Initialize()函数,FreeLibrary()就不

c# - 在抽象父类(super class)的子类中强制使用属性

如何强制子类实现其父类(superclass)的某些属性?原因是我想使用属性来获取有关该类的一般信息,例如“显示名称”、“说明”或“功能”。所以我想我可以在父类(superclass)中实现它们并强制子类实现这些属性。是否有类似于方法的抽象属性?[abstractDeclareMe]publicabstractclassInheritMe{publicabstractvoidDeclareMe();} 最佳答案 由于你的类迟早要运行,你可以在你的基类中添加检查机制来验证你的子类中某些属性的存在。这里有一些示例代码。classProg

c# - 如何在不复制元素的情况下从 HashSet 创建 ReadOnlyCollection?

我有一个私有(private)HashSet这是只读属性的支持字段,它应该返回一个只读集合,这样调用者就不能修改集合。所以我尝试:publicclassMyClass{privatereadonlyHashSet_referencedColumns;publicICollectionReferencedColumns{get{returnnewReadOnlyCollection(_referencedColumns);}}这不会编译为ReadOnlyCollection接受IListHashSet没有实现.我可以使用另一个包装器来避免复制项目吗?为了我的目的,只返回实现ICollec

c# - 如何在不复制的情况下从 char 数组创建字符串?

我有一个非常大的字符数组,我需要将其转换为字符串以便在其上使用正则表达式。但它太大了,当我将它传递给字符串构造函数时,我得到了OutOfMemoryException。我知道字符串是不可变的,因此不应该可以指定它的底层字符集合,但我需要一种无需复制就可以使用正则表达式的方法整个事情。我如何获得该数组?我使用StreamReader从文件中获取它。我知道要读取的内容的起始位置和长度,Read和ReadBlock方法需要我提供一个char[]缓冲区。所以这里是我想知道的事情:有没有办法指定字符串的底层集合?(它甚至将其字符保存在数组中吗?)...或直接在字符数组上使用正则表达式?...或者

c# - 如何在 Json.net 中强制保留最小小数位数?

当我使用json.net将小数写入json时,我遇到了一个恼人的不一致问题。有时是1dp,有时是2。显然我知道将小数输出到具有一定小数位数的字符串的解决方案,例如this,但我想如果不编写自定义序列化程序,您就无法使用json.net进行控制。我也知道Math.Round强制执行最大小数位数,这个问题与强制执行最小小数位数有关。前两个测试显示了正在发生的事情,它保留了声明或计算中的原始小数位数。我发现我可以添加然后减去一小部分,接下来的两个测试显示它有效,但是有没有更简洁的方法?[TestFixture]publicsealedclassDecimalPlaces{publicclas

c# - 如何从 System.DateTime.Now.Hour 获取 24 小时制?

这个问题不太可能帮助任何future的访问者;它只与一个小的地理区域、一个特定的时间点或一个非常狭窄的情况有关,这些情况并不普遍适用于互联网的全局受众。为了帮助使这个问题更广泛地适用,visitthehelpcenter.关闭10年前。我想从System.DateTime.Now.Hour获取当前小时数0-24。我不确定它是否会返回0-12或0-24之间的整数。我如何确保获得0-24之间的整数?