# length property

1. @override

int get length
override

The number of objects in this list.

The valid indices for a list are `0` through `length - 1`.

    final numbers = <int>[1, 2, 3];
    print(numbers.length); // 3

## Implementation

    @override
    int get length => _length;

1. @override

set length (int newLength)
override

Setting the `length` changes the number of elements in the list.

The list must be growable. If `newLength` is greater than current length, new entries are initialized to `null`, so `newLength` must not be greater than the current length if the element type `E` is non-nullable.

    final maybeNumbers = <int?>[1, null, 3];
    maybeNumbers.length = 5;
    print(maybeNumbers); // [1, null, 3, null, null]
    maybeNumbers.length = 2;
    print(maybeNumbers); // [1, null]

    final numbers = <int>[1, 2, 3];
    numbers.length = 1;
    print(numbers); // [1]
    numbers.length = 5; // Throws, cannot add `null`s.

## Implementation

    @override
    set length(int newLength) {
      if (newLength < 0) {
        throw RangeError.range(newLength, 0, _length, 'newLength');
      }
      if (newLength == _length) return;

      if (newLength < _length) {
        // Truncate the list
        while (_length > newLength) {
          removeLast();
        }
      } else {
        // Extend the list with nulls (if E is nullable) or default values
        if (null is! E) {
          throw UnsupportedError(
              'Cannot extend a LinkedList with non-nullable elements without a default value.');
        }
        while (_length < newLength) {
          add(null as E); // Add nulls for nullable types
        }
      }
    }