草庐IT

安全字典

全部标签

C# RabbitMQ 客户端线程安全

ConnectionFactoryfactory=newConnectionFactory{HostName="localhost"};using(IConnectionconnection=factory.CreateConnection())using(IModelchannel=connection.CreateModel()){channel.QueueDeclare("hello",false,false,false,null);for(inti=0;i我有上面的代码,我对线程安全性很好奇。我不确定,但我想ConnectionFactory是线程安全的。但是IConnecti

c# - List<T>.Contains() 是线程安全调用 - C#

我的理解是,如果您在C#中使用泛型列表(List),那么它可以支持多个并发读取器,但只能支持一个写入器。当您将编写器引入混合时,您还必须提供同步结构以使操作线程安全。List.Contains是否被视为读取操作?换句话说,如果我调用这个方法,我是否需要担心写入者可能同时写入这个列表? 最佳答案 是的,你应该。基本上,如果列表可能同时用于写入,我会同步任何操作。一般来说,我发现集合分为两类-一种是创建、初始化然后再也不会更改(线程安全),另一种是随着时间的推移而发生变化(非线程安全,所有访问都锁定)。

C# 字典初始化程序编译不一致

以下代码可以编译,但会因NullReferenceException而失败:classTest{publicDictionaryDictionary{get;set;}}staticvoidMain(string[]args){varx=newTest{Dictionary=//fails{{"key","value"},{"key2","value2"}}};}如果您将标记为“失败”的行替换为以下内容,它将正常工作(如预期):Dictionary=newDictionary失败的语法是否有任何用途——它能否在其他情况下成功使用?或者这是编译器的疏忽? 最佳

C# 使用 linq 对字典进行排序

我有一个C#字典:publicDictionary我想把我的结果放到一个通用列表中:ListproductList=newList();产品订购者按字典中的int值降序排列。我试过使用orderby方法,但没有成功。 最佳答案 您可以使用:ListproductList=dictionary.OrderByDescending(kp=>kp.Value).Select(kp=>kp.Key).ToList(); 关于C#使用linq对字典进行排序,我们在StackOverflow上找到一

C#:这个字段赋值安全吗?

在这段代码中:classClassWithConstants{privateconststringConstantA="Something";privateconststringConstantB=ConstantA+"Else";...}是否存在以ConstantB=="Else"结束的风险?还是线性分配? 最佳答案 你总会得到“SomethingElse”。这是因为ConstantB依赖于ConstantA。你甚至可以换行,你会得到相同的结果。编译器知道ConstantB依赖于ConstantA并会相应地处理它,即使您将它写在分

检查字典中的某些内容是否与该词典中的最大值相同?

我如何检查字典中的某些内容与该词典中的最大值相同。换句话说,获取所有最大值,而不是最低位置的最大值。我有此代码返回最大变量名称和值:d={'g_dirt4':g_dirt4,'g_destiny2':g_destiny2,'g_southpark':g_southpark,'g_codww2':g_codww2,'g_bfront2':g_bfront2,'g_reddead2':g_reddead2,'g_fifa18':g_fifa18,'g_motogp17':g_motogp17,'g_elderscrolls':g_elderscrolls,'g_crashbandicoot':g_

c# - 如何在 C# 中将字典初始化为 (key, value, value) 对

我想将值存储为键、值、值对。我的数据类型Key->int&bothvalues->ulong,如何初始化和获取此类字典的值。我正在使用VS-2005。如果我使用类或结构,那么我该如何获取值。 最佳答案 创建一个结构来存储你的值:structValuePair{publiculongValue1;publiculongValue2;}字典初始化:Dictionarydictionary=newDictionary();如果您使用int作为键,也许List就足够了?列表:Listlist=newList();ValuePair可以添加到

c# - 我需要在 C# .Net 中创建一个线程安全的静态变量

好吧,它比问题复杂一点。classA{staticintneedsToBeThreadSafe=0;publicstaticvoidM1(){needsToBeThreadSafe=RandomNumber();}publicstaticvoidM2(){print(needsToBeThreadSafe);}}现在我要求在M1()和M2()之间调用“needsToBeThreadSafe”保持线程安全。 最佳答案 怎么样:publicstaticvoidM1(){Interlocked.Exchange(refneedsToBeT

c# - 异步世界中的故障安全处置

在同步世界中,C#使一次性管理所有事物变得非常容易:using(IDisposablesomeDisposable=bla.bla()){//doourbidding}//don'tworrytoomuchaboutit但是,当我们使用异步时,我们不再享受usingblock带来的便利。我遇到的最好的策略之一是CCRiterator这允许我们使用异步代码“就好像它是同步的”。这意味着我们可以将usingblock保留在迭代器处理程序中,而不会陷入何时处理和捕获所有需要处理的情况的复杂决定中。但是,在许多情况下,调用CCR似乎有点矫枉过正,老实说,虽然我对CCR很满意,但对于外行来说,它

c# - .NET Framework 4.x 中的插件系统安全性(无 CAS)

我想实现的是一个具有以下功能的插件系统:从我(开发人员)可能不信任但安装插件的最终用户信任的来源加载外部插件在特定范围内授予每个插件权限;例如一个插件可能有权从特定位置读取文件,而其他插件可能被允许连接到特定网站位置每个插件权限的特例:与另一个对象交互,很可能作为接口(interface)实例提供,而不访问其任何非公共(public)成员(甚至不使用偷偷摸摸的反射技术)在插件代码造成任何危害之前阻止最终用户不同意的操作,例如访问非公共(public)成员或在文件系统上操作在我的搜索过程中,我发现大多数涉及代码访问安全的SO解决方案,据我所知,这些解决方案在.NET4.x中已经过时。我还