Share via


IFieldSymbol Interface

Definition

Represents a field in a class, struct or enum.

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

Remarks

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

Properties

AssociatedSymbol

If this field serves as a backing variable for an automatically generated property or a field-like event, returns that property/event. Otherwise returns null. Note, the set of possible associated symbols might be expanded in the future to reflect changes in the languages.

CanBeReferencedByName

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

(Inherited from ISymbol)
ConstantValue

Gets the constant value of this field

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)
CorrespondingTupleField

If this field represents a tuple element, returns a corresponding default element field. Otherwise returns null.

CustomModifiers

Returns custom modifiers associated with the field, 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)
FixedSize

If IsFixedSizeBuffer is true, the value between brackets in the fixed-size-buffer declaration. If IsFixedSizeBuffer is false or there is an error (such as a bad constant value in source), FixedSize is 0. Note that for fixed-size buffer declaration, this.Type will be a pointer type, of which the pointed-to type will be the declared element type of the fixed-size buffer.

HasConstantValue

Returns false if the field wasn't declared as "const", or constant value was omitted or erroneous. True otherwise.

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)
IsAbstract

Gets a value indicating whether the symbol is abstract.

(Inherited from ISymbol)
IsConst

Returns true if this field was declared as "const" (i.e. is a constant declaration). Also returns true for an enum member.

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)
IsExplicitlyNamedTupleElement

Returns true if this field represents a tuple element which was given an explicit name.

IsExtern

Gets a value indicating whether the symbol is defined externally.

(Inherited from ISymbol)
IsFixedSizeBuffer

Returns true if this field was declared as "fixed". Note that for a fixed-size buffer declaration, this.Type will be a pointer type, of which the pointed-to type will be the declared element type of the fixed-size buffer.

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)
IsOverride

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

(Inherited from ISymbol)
IsReadOnly

Returns true if this field was declared as "readonly".

IsRequired

True if this field is required to be set in an object initializer during construction.

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)
IsVirtual

Gets a value indicating whether the symbol is virtual.

(Inherited from ISymbol)
IsVolatile

Returns true if this field was declared as "volatile".

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)
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

Gets the top-level nullability of this field.

OriginalDefinition

Get the original definition of this symbol. If this symbol is derived from another symbol by (say) type substitution, this gets the original symbol, as it was defined in source or metadata.

RefCustomModifiers

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

RefKind

Returns the RefKind of the field.

Type

Gets the type of this field.

Methods

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

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

(Inherited from ISymbol)
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)
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(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)
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)

Extension Methods

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

Determines if symbol is Shared.

Applies to