Windows.Foundation.Collections.IVectorView
December 20, 2021 · View on GitHub
-description
Represents an immutable view into a vector.
.NET This interface appears to .NET code as System.Collections.Generic.IReadOnlyList<T> due to .NET language projection. In any case where a Windows Runtime type has implemented IVectorView<T>, .NET code can use the APIs of IReadOnlyList<T> instead.
-remarks
For read-write collections, the IVectorView<T> interface is still relevant, because the IVector.GetView method returns an IVectorView<T> instance.
If the underlying collection changes, methods and properties of the IVectorView<T> interface may throw an exception.
C++/WinRT If the underlying collection has changed, methods and properties may throw a
hresult_changed_stateexception.
C++/CX If the underlying collection has changed, methods and properties may throw a
ChangedStateExceptionexception.
When programming with .NET, this interface is hidden and developers should use the IReadOnlyList<T> interface if they want to implement a read-only vector/list type. In any case where a Windows Runtime type has implemented IVectorView<T>, .NET code can use the APIs of IReadOnlyList<T> instead. This includes all the existing Windows Runtime API and also scenarios such as using the APIs of Windows Runtime components originally implemented in Visual C++ component extensions (C++/CX) from a C# or Visual Basic app.
C++/WinRT extension functions
Note
Extension functions exist on the C++/WinRT projection types for certain Windows Runtime APIs. For example, winrt::Windows::Foundation::IAsyncAction is the C++/WinRT projection type for IAsyncAction. The extension functions aren't part of the application binary interface (ABI) surface of the actual Windows Runtime types, so they're not listed as members of the Windows Runtime APIs. But you can call them from within any C++/WinRT project. See C++/WinRT functions that extend Windows Runtime APIs.
auto begin() const;
Returns an iterator to the first element of the collection, for use in C++ algorithms such as range-based for loops.
auto end() const;
Returns an iterator to one past the last element of the collection, for use in C++ algorithms such as range-based for loops.
Interface inheritance
IVectorView inherits IIterable. Types that implement IVectorView also implement the interface members of IIterable. Similarly, if you're using .NET, there is support for IEnumerable<T>.