草庐IT

C# GC.Collect 如果对象是使用实例构造函数初始值设定项构造的,则不会销毁该对象

这个问题在这里已经有了答案:关闭9年前。PossibleDuplicate:ResurrectiondifferenceinusingObjectInitializer我很难理解垃圾收集器在C#中的工作原理(我使用的是2012,所以是c#4.5)。这是我的示例代码:publicclassA{publicintc;publicA(){}publicA(intpC){c=pC;}}publicstaticvoidMain(){//Test1vara=newA{c=199};varaRef=newWeakReference(a);a=null;Console.WriteLine(aRef.I

c# - 对Volatile.Read/Write的理解

我正在尝试了解C#Volatile类。正如我所读:Volatile.Write方法强制写入location中的值到通话点。此外,任何较早的程序顺序加载和存储必须在调用Volatile.Write之前发生。Volatile.Read方法强制读取location中的值在通话时。此外,任何以后的程序顺序加载和存储必须发生在调用Volatile.Read之后。这是否意味着:internalsealedclassThreadsSharingData{privateInt32m_flag=0;privateInt32m_value=0;//Thismethodisexecutedbyonethre

c# - 为什么 C# 对同一类型的不同值的重载方法调用不同?

我对c#方法重载和调用解析有一个疑问。假设我有以下C#代码:enumMyEnum{Value1,Value2}publicvoidtest(){method(0);//thiscallsmethod(MyEnum)method(1);//thiscallsmethod(object)}publicvoidmethod(objecto){}publicvoidmethod(MyEnume){}请注意,我知道如何使其工作,但我想知道为什么对于int(0)的一个值它调用一种方法而对于另一个(1)它调用另一个方法。这听起来很尴尬,因为这两个值具有相同的类型(int),但它们针对不同的方法“链接

c# - 如何在 C# 中对自定义 HTTP header 进行编码

有没有类似HttpUtility的类来对自定义header的内容进行编码?理想情况下,我希望保持内容的可读性。 最佳答案 您可以使用HttpEncoder.HeaderNameValueEncodeMethod在.NETFramework4.0及更高版本中。对于以前版本的.NETFramework,您可以使用HttpEncoder.HeaderNameValueEncode引用页上记录的逻辑来滚动您自己的编码器:Unicode值小于ASCII字符32的所有字符,除了ASCII字符9,都被URL编码为%NN格式,其中N个字符代表十六进

c# - 如何使用 PFX(Bouncy CaSTLe 或其他)以编程方式对可执行文件进行代码签名

我正在尝试确定使用BouncyCaSTLe、托管代码或来自C#的非托管代码对可执行文件进行代码签名的最佳方法。由于CAPICOM现在已被弃用,我想如果需要非托管地完成,mssign32.dll中的SignerSign方法之一是最好的方法。这个答案(https://stackoverflow.com/a/3952235/722078)看起来很接近,但它会生成一个.p7m文件,虽然看起来大小合适,但无法正确运行(显然在运行前重命名为.exe)。此处提问者(API/Librarytoreplacesigntool.exe)给出的解决方案似乎很有前途且管理得当,但就像TomCanham在下面的

c# - 如何按属性对 XDocument 进行排序?

我有一些XML我想按姓名排序。我使用XDocument加载该xml。如何查看按名称排序的xml? 最佳答案 如果XmlDocument不是这种情况,您可以使用LINQtoXml进行排序XDocumentinput=XDocument.Load(@"input.xml");XDocumentoutput=newXDocument(newXElement("Users",fromnodeininput.Root.Elements()orderbynode.Attribute("Name").Valuedescendingselectno

c# - 对 HttpApplication 进行单元测试

我有一个派生自HttpApplication的类,它添加了一些额外的功能。我已经到了需要对这些功能进行单元测试的地步,这意味着我必须能够创建HttpApplication的新实例、伪造请求并检索响应对象。我该如何对HttpApplication对象进行单元测试?我目前正在使用Moq,但我不知道如何设置所需的模拟对象。 最佳答案 不幸的是,这并不是特别容易做到,因为HttpApplication不适合很容易地进行模拟;没有可模拟的接口(interface),并且大多数方法未标记为虚拟。我最近遇到了与HttpRequest和HttpWe

c# - Linq to Objects - 从数字列表中返回数字对

varnums=new[]{1,2,3,4,5,6,7};varpairs=/*somelinqmagichere*/;=>对={{1,2},{3,4},{5,6},{7,0}}pairs的元素应该是双元素列表,或者是一些具有两个字段的匿名类的实例,比如new{First=1,Second=2}. 最佳答案 默认的linq方法都不能通过单次扫描懒惰地执行此操作。压缩序列本身会进行2次扫描,并且分组并不完全是惰性的。最好的办法是直接实现它:publicstaticIEnumerablePartition(thisIEnumerable

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

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

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

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