Tag: ilist

IList.Add()覆盖现有数据

我在向IList添加数据时遇到问题,但问题是每次添加数据时,现有数据都被当前数据覆盖,我的代码如下: Test test = new Test(); IList myList = new List(); foreach (DataRow dataRow in dataTable.Rows) { test.PatientID = Convert.ToInt64(dataRow.ItemArray[0]); test.LastName = dataRow.ItemArray[1].ToString(); test.FirstName = dataRow.ItemArray[2].ToString(); myList.Add(test); } 这背后的原因是什么?

为什么C#数组没有Count属性?

可能重复: 计数与集合中的长度与大小 真奇怪: C#数组如下 double[] test = new double[1]; 支持Length属性以获取数组的大小。 但是数组也实现了IList接口: IList list = test; 但是,IList接口还提供Count属性。 为什么arrays(在这种情况下为“测试”)没有? 编辑 :感谢所有人,他们指出它实际上是提供Count属性的ICollection接口(不是IList),而且这也是由于接口的显式实现。

动态创建IList类型的新实例

我的申请正在处理IList。 不同用户定义类型的IList。 我想我可以使用reflection来查看IList包含的对象类型,然后创建该类型的新实例,然后将其添加到IList本身? 所以在任何时候我都可能正在处理 IList l; 我想创建一个新的Customer实例 Customer c = new Customer(0, “None”) 然后将其添加到列表中 l.Add(c); 显然,在运行时动态执行此操作是问题的关键。 希望有人能给我一些指示。 谢谢brendan

为什么IList 实现IEnumerable 和ICollection 而ICollection 本身实现IEnumerable

为什么IList这样定义? public interface IList : ICollection, IEnumerable, IEnumerable public interface ICollection : IEnumerable, IEnumerable public interface IEnumerable : IEnumerable 不可能只是 public interface IList : ICollection 所以,为了测试我创建了这些接口,只是为了确定它是否有效! public interface IOne { string One(); } public interface ITwo : IOne { string Two(); } public interface IThree : ITwo, IOne { string Three(); } 虽然完美无瑕,但Resharper抱怨“冗余接口”。 有什么想法为什么微软继续这个实现?

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()?

哪个Json反序列化器呈现IList 集合?

我正在尝试将json反序列化为对象模型,其中集合表示为IList类型。 实际的反序列化在这里: JavaScriptSerializer serializer = new JavaScriptSerializer(); return serializer.Deserialize<IList>( (new StreamReader(General.GetEmbeddedFile(“Contacts.json”)).ReadToEnd())); 在我发布exception之前,我知道你应该知道隐含的转换是什么。 这是Contact类型: public class Contact { public int ID { get; set; } public string Name { get; set; } public LazyList Details { get; set; } //public List Details { get; set; } } 这是ContactDetail类型: public class ContactDetail { public int ID { […]

实现IList接口

我是仿制药的新手。 我想通过从IList接口派生它来实现我自己的集合。 你能给我一些实现IList接口的类的链接,或者为我提供一个至少实现Add和Remove方法的代码吗?

为什么Array类没有直接暴露其索引器?

要回答的事情: 不要担心方差 ,而有问题的项目是Array而不是T[] 。 多维数组的类似情况是[ 这里 ] 也就是说,N-dims线性变换总是可行的。 因此,这个问题引起了我的注意,因为它已经为线性索引器实现了IList 。 题: 在我的代码中,我有以下声明: public static Array ToArray(this T source); 我的代码知道如何使souce呈现一个数组(在运行时)。 我试图让消费代码直接访问其索引器。 但如果没有“作为IList”,它就不可能做到。 返回object[]可能需要额外的转换/转换,这就是我要阻止做的事情。 我能做的是: public static IList ToArray(this T source); 但我认为名为ToArray的方法返回一个看起来很奇怪的IList 。 因此,我对此感到困惑: 在Array的声明中,有 object IList.this[int index]; 这样我们就可以 Array a; a=Array.CreateInstance(typeof(char), 1); (a as IList)[0]=’a’; 但我们做不到 a[0]=’a’; 除非它被宣布为 public object this[int index]; 我能看到的唯一区别是它需要我们通过实现它的接口IList显式地使用它的索引器,但为什么呢? 有好处吗? 或者是否存在暴露问题?

将List <List >转换为IList <IList >

我写了一个public List<List> Fetch(string data) ,里面创建List<List> p = new List<List>(); 我的老板现在想要返回IList<IList>而不是List<List> ie public IList<IList> Fetch(string data) , 所以当我尝试return (IList<IList>) p; //throws an exception return (IList<IList>) p; //throws an exception 如何将List<List>转换为IList<IList>并返回List<List> 谢谢。

DataGridView使用SortableBindingList

我有一个返回IList 的函数,它是DataGridView的DataSource。 我了解到DataGridView不会对IList进行排序。 我读了这个stackoverflow Q&A ,我正在尝试实现SortableBindingList。 我一定做错了,因为我的DataGridView是空的。 我还尝试使用TextBox从SortableBindingSource访问一个元素,但也没有。 using Microsoft.SqlServer.Management.Controls; public partial class Form1 : Form { IBusinessLayer businessLayer; IList categories; SortableBindingList catSortable; public Form1() { InitializeComponent(); } private void Form1_Load(object sender, EventArgs e) { businessLayer = new BusinessLayer(); categories = businessLayer.GetAllCategories(); catSortable = new SortableBindingList(categories); categoryBindingSource.DataSource = catSortable; categoryDataGridView.DataSource = categoryBindingSource; textBox1.Text = catSortable[0].CategoryName; […]