对于声明透视,允许以下内容
IList<string> list= new string[3];
list.Add("Apple");
list.Add("Manago");
list.Add("Grapes");
Run Code Online (Sandbox Code Playgroud)
1)它编译很好,但运行时我收到"Collection was of fixed size"错误.当然,集合是按大小动态增长的,为什么这样的声明被编译器接受?
2)我可以分配给IList的不同列表是什么?例
IList<string> fruits=new List<string>();
Run Code Online (Sandbox Code Playgroud)
在这里,我将List分配给IList,我可以分配给IList的各种集合类有哪些?
最近我在泛型的背景下读到了一个术语"裸体约束".这是什么意思?我们在哪里使用它?
我在面试(C#3.0)中被要求提供一个逻辑来从列表中删除项目列表.
我回答了
int[] items={1,2,3,4};
List<int> newList = new List<int>() { 1, 2, 3, 4, 5, 56, 788, 9 };
newList.RemoveAll((int i) => { return items.Contains(i); });
Run Code Online (Sandbox Code Playgroud)
1)面试官回答说,我采用的算法会逐渐花费时间,如果项目增长,并要求我提供更好,更快的算法.什么是有效的算法?
2)如何使用LINQ实现相同的目标?
3)他让我提供一个双向关闭的例子?(一般我知道关闭,什么是双向关闭?,我回答说没有这样的术语存在,但他并不满足).
我不能重载List的Add方法吗?
class ListDemo<T>:List<T>
{
public override T Add<T>(T value)
{
return base.Add(value);
}
}
Run Code Online (Sandbox Code Playgroud)
我收到以下错误:
1)类型参数"T"与外部类型"CollectionsExample.ListDemo"中的类型参数同名
2)'CollectionsExample.ListDemo.Add(T)':找不到合适的方法来覆盖
获得范围"A"..."Z"的方式是什么样的
Enumerable.Range(1,100)
Enumerable.Range("A","Z");
Run Code Online (Sandbox Code Playgroud) 很抱歉问愚蠢的问题
是否有可能对泛型强制执行约束,使得给定的T可以从任何引用类型派生,除了一些A,B,C(其中A,B,C是引用类型).(即)
Where T : class except A,B,C
Run Code Online (Sandbox Code Playgroud) 当我需要传递Generic Type时,我可以使用语法
(例如:当然它不是通用方法)
public void Sample(T someValue)
{
......
}
Run Code Online (Sandbox Code Playgroud)
宣布有Sample<T> 什么好处?
我的意思是
public void Sample<T> (T someValue)
{
......
}
Run Code Online (Sandbox Code Playgroud) IComparable<T>和之间的主要区别是IEquatable<T>什么?什么时候具体使用?