相关疑难解决方法(0)

继承自List <T>

实现继承自的新类的最快方法是什么List<T>

class Animal {}

class Animals : List<Animal> {} // (1)
Run Code Online (Sandbox Code Playgroud)

我遇到的一个问题:通过简单地做(1),我发现我没有从继承任何构造函数中获益List<T>.

最后,我想Animals表现得很像List<T>(例如,可以构建,与Linq的兼容性).但另外,我还希望能够添加自己的自定义方法.

c# collections inheritance list

41
推荐指数
4
解决办法
3万
查看次数

.NET中是否有任何阻止空条目的集合?

我正在考虑一个符合一套合同的集合,但我认为这个问题适用于任何类型..NET框架中是否存在阻止空条目的集合?我想要的具体行为是这样的:

var set = new HashSet<object>();
bool added = set.Add(null);
Console.WriteLine(added); // prints "False"
Run Code Online (Sandbox Code Playgroud)

这不是内置的行为HashSet<T>.是否存在任何具有此(或类似)行为的集合,或者我最好自己滚动?如果是后者,最好的方法是什么?我应该直接继承HashSet<T>还是仅包装?

编辑:要清楚,这只是空闲的想知道.主要是因为我想不出任何理由,我会永远允许null进入一组对象.我对此没有任何特别需要.

.net c# generics collections

15
推荐指数
2
解决办法
6029
查看次数

隐藏构造函数的嵌套类在c#中是不可能的?

我最近做了一些编程,遇到了一个问题,我在c#中发现了一些奇怪的问题.(至少对于我来说)

public class Foo
{
    //whatever
    public class FooSpecificCollection : IList<Bar>
    {
         //implementation details
    }
    public FooSpecificCollection GetFoosStuff()
    {
         //return the collection
    }
}
Run Code Online (Sandbox Code Playgroud)

我希望Foo的消费者能够获得对FooSpecificCollection的引用,甚至对它执行一些操作.甚至可能将它设置为Foo的其他属性或像这样的smth,但不能创建此类的实例.(应该能够实现此集合的唯一类应该是Foo.

我的要求真的那么牵强吗?我知道人们更明智地定义了c#,但是不应该有这样一个选项,即父类可以创建一个嵌套的类实例,但没有其他人不能.

到目前为止,我创建了一个解决方案,通过属性创建一个抽象类或接口,并实现一个在其他任何地方都无法使用的具体私有类.

这是处理这种情况的正确方法吗?

c# language-features programming-languages

8
推荐指数
1
解决办法
2902
查看次数

覆盖List <T>的Add()

我不能重载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)':找不到合适的方法来覆盖

c# collections

6
推荐指数
2
解决办法
1万
查看次数