草庐IT

key_list

全部标签

c# - List<T> - 我传递的是对象还是引用?

好吧,我研究了泛型并有以下问题:Listlist=newListSomeClassMyInstance=SomeClass();list.Add(MyInstance);我不确定将添加到列表中的是什么-引用或引用类型的对象(指向MyInstance的实际值)。编辑:或者我将添加指向实际对象的值(即引用数据类型)?谢谢 最佳答案 当你处理引用类型时,你总是在处理引用,因此引用将被添加到列表中(实际上是引用的副本)。您实际上没有选择;这就是语言的工作原理。 关于c#-List-我传递的是对象

c# - List ForEach 休息

有没有办法突破foreach扩展方法?“break”关键字无法将扩展方法识别为要中断的有效范围。//Doesn'tcompileEnumerable.Range(0,10).ToList().ForEach(i=>{System.Windows.MessageBox.Show(i.ToString());if(i>2)break;});编辑:从问题中删除“linq”请注意,该代码只是一个示例,显示中断在扩展方法中不起作用...我真正想要的是让用户能够中止处理列表..UI线程有一个中止变量和for当用户点击取消按钮时,循环就会中断。现在,我有一个普通的for循环,但我想看看是否可以使用扩

c# - List<T>.Remove 应该放在 List<T>.Exists 之前吗?

拥有Listpaths=newList();我想删除我不确定是否存在的项目。我应该检查它是否存在,还是直接运行Remove方法?是if(paths.Exists(stringVar))在paths.Remove(stringVar)之前需要或考虑好的做法?如果列表中没有这样的项目,则在没有Exists的情况下运行Remove将简单地返回false。 最佳答案 不,它不会抛出异常,也不需要额外的检查。见MSDN:trueifitemissuccessfullyremoved;otherwise,false.Thismethodalso

c# - 如何将字符转换为等效的 System.Windows.Input.Key 枚举值?

我想写一个这样的函数,publicSystem.Windows.Input.KeyResolveKey(charcharToResolve){//Codegoeshere,thatresolvesthecharToResolve//intotheKeyenumeratedvalue//(Forexamplewith'.'asthecharacterforKey.OemPeriod)}我知道我可以写一个巨大的Switch-case来匹配角色,但还有其他方法吗?问题是Key枚举的字符串可能与字符不匹配,因此Enum.IsDefined将不起作用有什么想法吗?更新:这是在Windows环境下

c# - C# 是通过引用还是作为副本将 List<T> 传递给方法?

这个问题在这里已经有了答案:Arearraysorlistspassedbydefaultbyreferenceinc#?(4个答案)关闭8年前。从C/C++迈出我在C#世界的第一步,所以细节有点模糊。据我所知,默认情况下,类是通过引用传递的,但是例如。列表如:voidDoStuff(Liststrs){//dostuffwiththelistofstrings}和其他地方Listsl=newList();//nextfilllistinaloopetc.andthendostuffwithit:DoStuff(sl);在这种情况下,sl是通过引用传递的还是制作的副本,以便我需要重新定

c# - IEnumerable 中的项目不等于 List 中的项目

我只是想不通为什么找不到我筛选列表中的项目。我已经简化了这个例子来展示它。我有一个类项目...publicclassItem{publicItem(stringname){Name=name;}publicstringName{get;set;}publicoverridestringToString(){returnName;}}...和一个“项目”类,它应该过滤项目并检查第一个项目是否仍在列表中...publicclassItems{privateIEnumerable_items;publicItems(IEnumerableitems){_items=items;}public

c# - GUID 是(临时)加密的好 key 吗?

我正在生成加密key以使用Rijndael(AES)encryptionalgoritm加密一些敏感数据.我正在使用guid作为key生成器。这些key是否足够“强大”?注意:只敏感20分钟。 最佳答案 没有。可以预测GUIDkey,至少是那些由.NET/WinAPI生成的key。还要记住,GUID甚至没有真正的128位随机性,因为版本号是固定的。这首先会为您提供一个非常弱的key。更糟糕的是,GUID算法的多个版本都存在可预测性问题。关键是GUID不是随机创建的,而是遵循一定的规则,使GUID几乎不可能发生冲突。正如评论中所讨论的

c# - List<MyClass> 对象缓冲区在哪里维护?它是在 RAM 上还是在 HDD 上?

我的问题可能听起来有点含糊。但我想知道的是List在哪里缓冲区保持不变。我有一个列表List我正在向其中添加来自无限循环的项目。但是Windows服务(我在其中创建列表)的RAM消耗从未超过17MB。事实上,即使我继续向列表中添加项目,它也徘徊在15-16MB之间。我试图对我的服务进行一些负载测试并遇到了这个问题。谁能告诉我它是否将数据转储到机器上的某个临时位置,并从那里选择它,因为我没有看到RAM消耗增加。我无限调用的方法是AddMessageToList()。classMainClass{ListmessageList=newList();privatevoidAddMessage

C# List<T> 与 IEnumerable<T> 性能问题

你好,假设这两种方法:privateListGetProviderForType(Typetype){ListreturnValue=newList();foreach(KeyValuePairproviderin_objectProviders){if((provider.Key.IsAssignableFrom(type)||type.IsAssignableFrom(provider.Key))&&provider.Value.SupportsType(type)){returnValue.Add(provider.Value);}}returnreturnValue;}priv

c# - WPF - 将 List<T> 绑定(bind)为 WrapPanel 的内容

是否可以将WrapPanel的内容(子项)绑定(bind)到依赖属性?我在想的是拥有一个List类型的依赖属性,然后为MyClass定义一个模板。然后让WrapPanel显示它们。我知道使用列表框更容易做到这一点,但由于其他限制,我需要在转到列表框之前尝试使用WrapPanel。我正在使用MVVM。我更喜欢以那种模式这样做。如果我要脱离MVVM,我可以只使用一个事件或命名它并在加载时填充它。我希望有一种更简洁的绑定(bind)方式。 最佳答案 ItemsControl是你的friend: