Как делают меня восходящий набор базового класса в C#?

В общем, лучше не полагаться на finalize(), чтобы делать очистку и т. д.

Согласно Javadoc (что было бы полезно прочитать), это :

Вызывается сборщиком мусора на объекте, когда сбор мусора определяет, что больше нет ссылок на объект.

blockquote>

Как указал Йоахим, это может никогда не произойти в жизни программы, если объект всегда доступен.

Кроме того, сборщик мусора не может запускаться в любое конкретное время. В общем, то, что я пытаюсь сказать, finalize(), вероятно, не самый лучший метод для использования вообще, если для этого не требуется что-то конкретное.

5
задан Guy 11 August 2009 в 23:14
поделиться

4 ответа

Если вы используете C # 3.0 (Visual Studio 2008), вы можете:

using System.Linq;

List<B> bList = foo.GetListOfA().Cast<B>().ToList();
7
ответ дан 18 December 2019 в 11:59
поделиться

Это может теперь быть сделано следующий способ использовать linq

List<A> listOfA;
List<B> listOfB = listOfA.Select(a => a as B).ToList();
0
ответ дан 18 December 2019 в 11:59
поделиться

Используя System.Linq, вы можете сказать

List<B> bList = foo.GetListOfA().Cast<B>().ToList()

Или

var bs = foo.GetListOfA().Cast<B>()

Или

static class AExts
{
    public List<B> AsB( this List<A> list )
    {
        return list.Cast<B>().ToList();
    }
}

List<B> bList = foo.GetListOfA().AsB();

Или

static class FooExts
{
    public List<B> AsB( this Foo foo )
    {
        return list.GetListOfA().AsB();
    }
}
List<B> bList = foo.AsB();

Или, если у вас нет / не можете / не использовать Linq, алгоритмы в PowerCollections имеют то же самое

И я не смотрел на другой ответ, хотя он, вероятно, говорит то же самое!

5
ответ дан 18 December 2019 в 11:59
поделиться

Вы не можете. Фактически вы должны создать новый List и добавить все элементы из исходного списка в новый список.

Самый простой способ сделать это, не считая написания собственного метода для этого, заключается в использовании Linq (см. другие ответы).

3
ответ дан 18 December 2019 в 11:59
поделиться
Другие вопросы по тегам:

Похожие вопросы: