Partager via


IArrayTypeSymbol Interface

Definition

Represents an array.

public interface class IArrayTypeSymbol : IEquatable<Microsoft::CodeAnalysis::ISymbol ^>, Microsoft::CodeAnalysis::ITypeSymbol
public interface IArrayTypeSymbol : IEquatable<Microsoft.CodeAnalysis.ISymbol>, Microsoft.CodeAnalysis.ITypeSymbol
type IArrayTypeSymbol = interface
    interface ITypeSymbol
    interface INamespaceOrTypeSymbol
    interface ISymbol
    interface IEquatable<ISymbol>
Public Interface IArrayTypeSymbol
Implements IEquatable(Of ISymbol), ITypeSymbol
Implements

Remarks

This interface is reserved for implementation by its associated APIs. We reserve the right to change it in the future.

Properties

AllInterfaces

The list of all interfaces of which this type is a declared subtype, excluding this type itself. This includes all declared base interfaces, all declared base interfaces of base types, and all declared base interfaces of those results (recursively). This also is the effective interface set of a type parameter. Each result appears exactly once in the list. This list is topologically sorted by the inheritance relationship: if interface type A extends interface type B, then A precedes B in the list. This is not quite the same as "all interfaces of which this type is a proper subtype" because it does not take into account variance: AllInterfaces for IEnumerable<string> will not include IEnumerable<object>.

(Inherited from ITypeSymbol)
BaseType

The declared base type of this type, or null. The object type, interface types, and pointer types do not have a base type. The base type of a type parameter is its effective base class.

(Inherited from ITypeSymbol)
CanBeReferencedByName

Returns true if this symbol can be referenced by its name in code.

(Inherited from ISymbol)
ContainingAssembly

Gets the IAssemblySymbol for the containing assembly. Returns null if the symbol is shared across multiple assemblies.

(Inherited from ISymbol)
ContainingModule

Gets the IModuleSymbol for the containing module. Returns null if the symbol is shared across multiple modules.

(Inherited from ISymbol)
ContainingNamespace

Gets the INamespaceSymbol for the nearest enclosing namespace. Returns null if the symbol isn't contained in a namespace.

(Inherited from ISymbol)
ContainingSymbol

Gets the ISymbol for the immediately containing symbol.

(Inherited from ISymbol)
ContainingType

Gets the INamedTypeSymbol for the containing type. Returns null if the symbol is not contained within a type.

(Inherited from ISymbol)
CustomModifiers

Custom modifiers associated with the array type, or an empty array if there are none.

DeclaredAccessibility

Gets a Accessibility indicating the declared accessibility for the symbol. Returns NotApplicable if no accessibility is declared.

(Inherited from ISymbol)
DeclaringSyntaxReferences

Get the syntax node(s) where this symbol was declared in source. Some symbols (for example, partial classes) may be defined in more than one location. This property should return one or more syntax nodes only if the symbol was declared in source code and also was not implicitly declared (see the IsImplicitlyDeclared property).

Note that for namespace symbol, the declaring syntax might be declaring a nested namespace. For example, the declaring syntax node for N1 in "namespace N1.N2 {...}" is the entire NamespaceDeclarationSyntax for N1.N2. For the global namespace, the declaring syntax will be the CompilationUnitSyntax.

(Inherited from ISymbol)
ElementNullableAnnotation

Gets the top-level nullability of the elements stored in the array.

ElementType

Gets the type of the elements stored in the array.

HasUnsupportedMetadata

Indicates that this symbol uses metadata that cannot be supported by the language.

Examples include:

  • Pointer types in VB
  • ByRef return type
  • Required custom modifiers

This is distinguished from, for example, references to metadata symbols defined in assemblies that weren't referenced. Symbols where this returns true can never be used successfully, and thus should never appear in any IDE feature.

This is set for metadata symbols, as follows:

  • Type - if a type is unsupported (for example, a pointer type)
  • Method - parameter or return type is unsupported
  • Field - type is unsupported
  • Event - type is unsupported
  • Property - type is unsupported
  • Parameter - type is unsupported

(Inherited from ISymbol)
Interfaces

Gets the set of interfaces that this type directly implements. This set does not include interfaces that are base interfaces of directly implemented interfaces. This does include the interfaces declared as constraints on type parameters.

(Inherited from ITypeSymbol)
IsAbstract

Gets a value indicating whether the symbol is abstract.

(Inherited from ISymbol)
IsAnonymousType

Is this a symbol for an anonymous type (including anonymous VB delegate).

(Inherited from ITypeSymbol)
IsDefinition

Gets a value indicating whether the symbol is the original definition. Returns false if the symbol is derived from another symbol, by type substitution for instance.

(Inherited from ISymbol)
IsExtern

Gets a value indicating whether the symbol is defined externally.

(Inherited from ISymbol)
IsImplicitlyDeclared

Returns true if this symbol was automatically created by the compiler, and does not have an explicit corresponding source code declaration.

(Inherited from ISymbol)
IsNamespace

Returns true if this symbol is a namespace. If it is not a namespace, it must be a type.

(Inherited from INamespaceOrTypeSymbol)
IsNativeIntegerType

True if the type represents a native integer. In C#, the types represented by language keywords 'nint' and 'nuint'.

(Inherited from ITypeSymbol)
IsOverride

Gets a value indicating whether the symbol is an override of a base class symbol.

(Inherited from ISymbol)
IsReadOnly

True if the type is readonly.

(Inherited from ITypeSymbol)
IsRecord

For source symbols, true if the type is a record. For metadata symbols, true if the type is a record and a reference type.

(Inherited from ITypeSymbol)
IsReferenceType

True if this type is known to be a reference type. It is never the case that IsReferenceType and IsValueType both return true. However, for an unconstrained type parameter, IsReferenceType and IsValueType will both return false.

(Inherited from ITypeSymbol)
IsRefLikeType

True if the type is ref-like, meaning it follows rules similar to CLR by-ref variables. False if the type is not ref-like or if the language has no concept of ref-like types.

(Inherited from ITypeSymbol)
IsSealed

Gets a value indicating whether the symbol is sealed.

(Inherited from ISymbol)
IsStatic

Gets a value indicating whether the symbol is static.

(Inherited from ISymbol)
IsSZArray

Is this a zero-based one-dimensional array, i.e. SZArray in CLR terms. SZArray is an array type encoded in metadata with ELEMENT_TYPE_SZARRAY (always single-dim array with 0 lower bound). Non-SZArray type is encoded in metadata with ELEMENT_TYPE_ARRAY and with optional sizes and lower bounds. Even though non-SZArray can also be a single-dim array with 0 lower bound, the encoding of these types in metadata is distinct.

IsTupleType

Is this a symbol for a tuple .

(Inherited from ITypeSymbol)
IsType

Returns true if this symbols is a type. If it is not a type, it must be a namespace.

(Inherited from INamespaceOrTypeSymbol)
IsUnmanagedType

True if the type is unmanaged according to language rules. False if managed or if the language has no concept of unmanaged types.

(Inherited from ITypeSymbol)
IsValueType

True if this type is known to be a value type. It is never the case that IsReferenceType and IsValueType both return true. However, for an unconstrained type parameter, IsReferenceType and IsValueType will both return false.

(Inherited from ITypeSymbol)
IsVirtual

Gets a value indicating whether the symbol is virtual.

(Inherited from ISymbol)
Kind

Gets the SymbolKind indicating what kind of symbol it is.

(Inherited from ISymbol)
Language

Gets the source language ("C#" or "Visual Basic").

(Inherited from ISymbol)
Locations

Gets the locations where the symbol was originally defined, either in source or metadata. Some symbols (for example, partial classes) may be defined in more than one location.

(Inherited from ISymbol)
LowerBounds

Specified lower bounds for dimensions, by position. The length can be less than Rank, meaning that some trailing dimensions don't have the lower bound specified. The most common case is all dimensions are zero bound - a default (Nothing in VB) array is returned in this case.

MetadataName

Gets the name of a symbol as it appears in metadata. Most of the time, this is the same as the Name property, with the following exceptions:

  1. The metadata name of generic types includes the "`1", "`2" etc. suffix that indicates the number of type parameters (it does not include, however, names of containing types or namespaces).
  2. The metadata name of explicit interface names have spaces removed, compared to the name property.
  3. The length of names is limited to not exceed metadata restrictions.
(Inherited from ISymbol)
MetadataToken

Gets the metadata token associated with this symbol, or 0 if the symbol is not loaded from metadata.

(Inherited from ISymbol)
Name

Gets the symbol name. Returns the empty string if unnamed.

(Inherited from ISymbol)
NullableAnnotation

Nullable annotation associated with the type, or None if there are none.

(Inherited from ITypeSymbol)
OriginalDefinition

The original definition of this symbol. If this symbol is constructed from another symbol by type substitution then OriginalDefinition gets the original symbol as it was defined in source or metadata.

(Inherited from ITypeSymbol)
Rank

Gets the number of dimensions of this array. A regular single-dimensional array has rank 1, a two-dimensional array has rank 2, etc.

Sizes

Specified sizes for dimensions, by position. The length can be less than Rank, meaning that some trailing dimensions don't have the size specified. The most common case is none of the dimensions have the size specified - an empty array is returned.

SpecialType

An enumerated value that identifies certain 'special' types such as Object. Returns None if the type is not special.

(Inherited from ITypeSymbol)
TypeKind

An enumerated value that identifies whether this type is an array, pointer, enum, and so on.

(Inherited from ITypeSymbol)

Methods

Accept(SymbolVisitor) (Inherited from ISymbol)
Accept<TArgument,TResult>(SymbolVisitor<TArgument,TResult>, TArgument) (Inherited from ISymbol)
Accept<TResult>(SymbolVisitor<TResult>) (Inherited from ISymbol)
Equals(IArrayTypeSymbol)
Equals(ISymbol, SymbolEqualityComparer)

Determines if this symbol is equal to another, according to the rules of the provided SymbolEqualityComparer

(Inherited from ISymbol)
FindImplementationForInterfaceMember(ISymbol)

Returns the corresponding symbol in this type or a base type that implements interfaceMember (either implicitly or explicitly), or null if no such symbol exists (which might be either because this type doesn't implement the container of interfaceMember, or this type doesn't supply a member that successfully implements interfaceMember).

(Inherited from ITypeSymbol)
GetAttributes()

Gets the attributes for the symbol. Returns an empty ImmutableArray<T> if there are no attributes.

(Inherited from ISymbol)
GetDocumentationCommentId()

Returns the Documentation Comment ID for the symbol, or null if the symbol doesn't support documentation comments.

(Inherited from ISymbol)
GetDocumentationCommentXml(CultureInfo, Boolean, CancellationToken)

Gets the XML (as text) for the comment associated with the symbol.

(Inherited from ISymbol)
GetMembers()

Get all the members of this symbol.

(Inherited from INamespaceOrTypeSymbol)
GetMembers(String)

Get all the members of this symbol that have a particular name.

(Inherited from INamespaceOrTypeSymbol)
GetTypeMembers()

Get all the members of this symbol that are types.

(Inherited from INamespaceOrTypeSymbol)
GetTypeMembers(String, Int32)

Get all the members of this symbol that are types that have a particular name and arity

(Inherited from INamespaceOrTypeSymbol)
GetTypeMembers(String)

Get all the members of this symbol that are types that have a particular name, of any arity.

(Inherited from INamespaceOrTypeSymbol)
ToDisplayParts(NullableFlowState, SymbolDisplayFormat)

Converts a symbol to an array of string parts, each of which has a kind. Useful for colorizing the display string.

(Inherited from ITypeSymbol)
ToDisplayParts(SymbolDisplayFormat)

Convert a symbol to an array of string parts, each of which has a kind. Useful for colorizing the display string.

(Inherited from ISymbol)
ToDisplayString(NullableFlowState, SymbolDisplayFormat)

Converts an ITypeSymbol and a nullable flow state to a string representation.

(Inherited from ITypeSymbol)
ToDisplayString(SymbolDisplayFormat)

Converts the symbol to a string representation.

(Inherited from ISymbol)
ToMinimalDisplayParts(SemanticModel, Int32, SymbolDisplayFormat)

Convert a symbol to an array of string parts, each of which has a kind. May be tailored to a specific location in the source code. Useful for colorizing the display string.

(Inherited from ISymbol)
ToMinimalDisplayParts(SemanticModel, NullableFlowState, Int32, SymbolDisplayFormat)

Convert a symbol to an array of string parts, each of which has a kind. May be tailored to a specific location in the source code. Useful for colorizing the display string.

(Inherited from ITypeSymbol)
ToMinimalDisplayString(SemanticModel, Int32, SymbolDisplayFormat)

Convert a symbol to a string that can be displayed to the user. May be tailored to a specific location in the source code.

(Inherited from ISymbol)
ToMinimalDisplayString(SemanticModel, NullableFlowState, Int32, SymbolDisplayFormat)

Converts a symbol to a string that can be displayed to the user. May be tailored to a specific location in the source code.

(Inherited from ITypeSymbol)
WithNullableAnnotation(NullableAnnotation)

Returns the same type as this type but with the given nullable annotation.

(Inherited from ITypeSymbol)

Extension Methods

IsMustOverride(ISymbol)
IsNotOverridable(ISymbol)
IsOverridable(ISymbol)
IsOverrides(ISymbol)
IsShared(ISymbol)

Determines if symbol is Shared.

Applies to