Tag: icollection

将嵌套集合发布到Web API

我正在尝试将复杂类型的对象发布到web api。 在web api端,当方法接收到object参数时,除了从ICollection派生的集合之外,每个属性都被正确设置。 这是我的示例类: public class MyClass { private int id; public int Id { get { return id; } set { id = value; } } private MyCollection collection; public MyCollection Collection { get { return collection; } set { collection = value; } } } public class MyCollection : ICollection { public […]

返回ICollection优于List 的优点是什么

可能重复: List(of T)和Collection(of T)有什么区别? 我有一个静态类和一个getter来返回我的List Collection。 现在我读了并被告知要返回ICollection而不是List。 使用公共静态ICollection而不是公共静态List有什么好处? static class Storage { private static List store; static Storage() { store = new List(); } public static ICollection getList { get { return store.AsReadOnly(); } } public static void addString(string add) { store.Add(add); } public static void removeString(string remove) { store.Remove(remove); } public static void display() […]

ICollection上的AsQueryable()是否真的会执行延迟执行?

我正在使用Entity Framework CodeFirst,我使用ICollection作为父子关系 public class Person { public string UserName { get;set} public ICollection Blogs { get; set;} } public class Blog { public int id { get; set; } public string Subject { get; set; } public string Body { get; set; } } 好吧,到目前为止一切正常,但我担心的是,每当我想得到一个人的博客时,我就把它当作 var thePerson = _context.Persons.Where(x => x.UserName = ‘xxx’).SingleOrDefault(); var […]

线程安全收集与上限

我在具有以下属性的集合之后: threadsafe :它将在asp.net中使用,多个客户端可以尝试同时添加,删除和访问成员 max elements :我希望能够在构造时设置上限,最大元素数 TryAdd :与BlockingCollection.TryAdd(T)相同的方法将是完美的,即如果已达到最大元素数,它将返回false 类似于字典 :在大多数其他方面, ConcurrentDictionary是完美的,即通过键识别元素的能力,删除任何项目(不仅仅是第一个或最后一个,我认为这将是BlockingCollection的限制) 在我尝试推出自己的产品之前,我的问题是: 我是否错过了内置类型,它会对集合中的元素数量设置安全上限? 是否有办法以某种方式使用BlockingCollection实现此function? 最后,如果我确实需要尝试自己做,我应该考虑什么方法? 它是否像带有locks的包装Dictionary一样简单? 使用示例:具有参与人数限定限制的聊天室可以存储参与者的连接信息并拒绝新参赛者,直到有足够的空间进入

IList必须是有限的吗?

.NET的IList必须是有限的吗? 假设我编写了一个实现IList FibonacciList类 属性Item [n]返回第n个Fibonacci数。 属性IsReadOnly返回true。 方法IndexOf和Contains我们可以很容易地实现,因为Fibonacci序列正在增加 – 为了测试数m是否是Fibonacci,我们只需要计算斐波纳契数的有限序列,直到m。 方法GetEnumerator()做正确的事情 我们现在已经实现了除Count()之外的只读IList所需的所有方法。 这很酷,还是滥用IList? 斐波那契数字很快变得不切实际(因此上面的IList )。 有界无限序列可能更合理,它可以实现IList或IList 。 附录II:Fibonacci序列可能是一个不好的例子,因为计算远值是昂贵的 – 要找到必须计算所有早期值的第n个值。 因此,正如Mošmondor所说,人们可能会将其设为IEnumerable并使用.ElementAt 。 然而,存在其他序列,其中可以快速计算远距离值而无需计算较早的值 。 (令人惊讶的是,pi的数字是这样的序列 )。 这些序列更“强烈”,它们真正支持随机访问。 编辑:没有人反对无限的IEnumerables。 他们如何处理Count()?

ICollection / ICollection 歧义问题

只想对语法sygar进行简单的扩展: public static bool IsNotEmpty(this ICollection obj) { return ((obj != null) && (obj.Count > 0)); } public static bool IsNotEmpty(this ICollection obj) { return ((obj != null) && (obj.Count > 0)); } 当我使用一些collections品时,它可以很好地工作,但是当我与其他人合作时,我得到了 以下方法或属性之间的调用不明确:’PowerOn.ExtensionsBasic.IsNotEmpty(System.Collections.IList)’和’PowerOn.ExtensionsBasic.IsNotEmpty(System.Collections.Generic.ICollection)’ 这个问题有任何规范的解决方案吗? 不,我不想在调用此方法之前执行强制转换;)

添加到ICollection

我目前正在编写一个C#项目,我需要对项目进行unit testing。 对于我需要进行unit testing的方法之一,我使用ICollection,它通常从列表框的选定项中填充。 当我为方法创建unit testing时,它会创建该行 ICollection icollection = null; //Initialise to an appropriate value 如何创建此ICollection的实例和项目集合?

如何在mvc4中从控制器传递一对多到视图

好的,所以这将是你们帮助我的变化后,我假设我在某处得到语法错误 视图 @model OilNGasWeb.ModelData.Clients @{ ViewBag.Title = “Index”; } County’s for @Html.ActionLink(“Create New”, “Create”,new { id = Model.ClientID },null) @Html.DisplayNameFor(model => model.County) @Html.DisplayNameFor(model => model.Note) @Html.DisplayNameFor(model => model.Comment) @foreach (var item in Model.Countys) { @Html.DisplayFor(modelItem => item.County) @Html.DisplayFor(modelItem => item.Note) @Html.DisplayFor(modelItem => item.Comment) @Html.ActionLink(“Edit”, “Edit”, new { id=item.CountyID }) @Html.ActionLink(“Details”, “Details”, new { id=item.CountyID }) […]

我无法访问数组的Count属性,但通过强制转换为ICollection!

int[] arr = new int[5]; Console.WriteLine(arr.Count.ToString());//Compiler Error Console.WriteLine(((ICollection)arr).Count.ToString());//works print 5 Console.WriteLine(arr.Length.ToString());//print 5 你对此有解释吗?

为什么我可以将索引器应用于VB.Net中的ICollection,而不是C#中

将一些代码从VB.Net转换为C#,当我遇到这个时,在使用Ionic Zip库的一些代码中: Dim zipEntry1 As ZipEntry = zipFile1.Entries(0) 很简单: ZipEntry zipEntry1 = zipFile1.Entries[0]; 我在C#上遇到这个错误: 无法将带有[]的索引应用于类型为“System.Collections.Generic.ICollection”的表达式 两者都使用相同版本的DLL,在两个zipFile1.Entries都是一个通用的ICollection 。 我在VB.Net上测试了下面的内容,它成功构建: Option Strict On Option Explicit On Imports Ionic.Zip Module Module1 Sub Main() Dim zipFile1 = ZipFile.Read(“C:\test”) Dim zipEntry = zipFile1.Entries(0) End Sub End Module 这不构建: using Ionic.Zip; namespace ConsoleApplication2 { class Program { static void Main(string[] args) […]