Как я могу представить только фрагмент IList <>?

Просто перенесите один из двух операндов на первый поплавок.

v = (float)s / t;

Приведение имеет более высокий приоритет, чем деление, поэтому происходит до деления.

Другой операнд будет эффективно автоматически передаваться в float компилятором, потому что правила говорят, что если любой из операндов имеет тип с плавающей точкой, то операция будет работать с плавающей запятой, даже если другой операнд является интегральным. Спецификация языка Java, §4.2.4 и §15.17

10
задан Oli 24 September 2008 в 15:26
поделиться

6 ответов

Попробуйте метод, который возвращает перечисление с помощью урожая:

IEnumerable<T> FilterCollection<T>( ReadOnlyCollection<T> input ) {
    foreach ( T item in input )
        if (  /* criterion is met */ )
            yield return item;
}
15
ответ дан 3 December 2019 в 16:11
поделиться

Можно всегда писать класс, который реализует IList и переводит все вызовы к исходному списку (таким образом, он не имеет своей собственной копии данных) после перевода индексов.

1
ответ дан 3 December 2019 в 16:11
поделиться

Эти foreach образцы прекрасны, хотя можно сделать их намного более краткими при использовании.NET 3.5 и LINQ:

return FullList.Where(i => IsItemInPartialList(i)).ToList();
8
ответ дан 3 December 2019 в 16:11
поделиться

Вы могли использовать возврат урожая для создания фильтрованного списка

IEnumerable<object> FilteredList()
{
    foreach( object item in FullList )
    {
        if( IsItemInPartialList( item )
            yield return item;
    }
}
1
ответ дан 3 December 2019 в 16:11
поделиться

В зависимости от того, как необходимо отфильтровать набор, можно хотеть создать класс, который реализует IList (или IEnumerable, если это работает на Вас), но это слоняется без дела с индексацией и доступом, чтобы только возвратить значения, которые Вы хотите. Например,

class EvenList: IList
{
    private IList innerList;
    public EvenList(IList innerList)
    {
         this.innerList = innerList;
    }

    public object this[int index]
    {
        get { return innerList[2*i]; }
        set { innerList[2*i] = value; }
    }
    // and similarly for the other IList methods
}
1
ответ дан 3 December 2019 в 16:11
поделиться

Как к фильтрованным элементам должны получить доступ? Если это через Итератор затем, возможно, Вы могли бы записать пользовательский итератор, который пропускает элементы, которые Вы не хотите публично видимый?

Если необходимо обеспечить Набор затем, Вы, возможно, должны были бы записать свой собственный класс Набора, который просто проксирует к базовому Набору, но предотвращает доступ к элементам, которые Вы не хотите публично видимый.

(Правовая оговорка: я не очень знаком с C#, таким образом, это общие ответы. Могут быть более определенные ответы на C# та работа лучше),

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

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