Click or drag to resize

Deconstruction Class

Represents a group of local variable declarations that are initialized from a tuple.
Inheritance Hierarchy

Namespace:  Nova.CodeDOM
Assembly:  Nova.CodeDOM (in Nova.CodeDOM.dll) Version: 7.44.8391.13415
Syntax
C#
public class Deconstruction : MultiLocalDecl

The Deconstruction type exposes the following members.

Constructors
Properties
  NameDescription
Public property_AsString
This property is just to make debugging easier.
(Inherited from CodeObject.)
Public propertyAnnotations
Annotations (comments, attributes, directives, messages) associated with the current code object.
(Inherited from CodeObject.)
Public propertyCategory
The descriptive category of the code object.
(Inherited from LocalDecl.)
Public propertyColumnNumber
The column number associated with the Deconstruction.
(Overrides MultiLocalDeclColumnNumber.)
Public propertyComment
The comment for the code object (if any).
(Inherited from CodeObject.)
Public propertyCount
The number of LocalDecls.
(Inherited from MultiLocalDecl.)
Public propertyDocComment
The documentation comment for the code object (if any).
(Inherited from CodeObject.)
Public propertyEOLComment
The End-Of-Line comment for the code object (if any).
(Inherited from CodeObject.)
Public propertyHasAnnotations
True if the code object has any annotations.
(Inherited from CodeObject.)
Public propertyHasArgument
Always true for this type.
(Overrides VariableDeclHasArgument.)
Public propertyHasArgumentParens
Always true for this type.
(Overrides VariableDeclHasArgumentParens.)
Public propertyHasAttributes
True if the code object has any attributes.
(Inherited from CodeObject.)
Public propertyHasComments
True if the code object has any comments of any kind.
(Inherited from CodeObject.)
Public propertyHasCompilerDirectives
True if the code object has any compiler directive annotations.
(Inherited from CodeObject.)
Public propertyHasDocComments
True if the code object has any documentation comments.
(Inherited from CodeObject.)
Public propertyHasEOLComments
True if the code object has any EOL comments.
(Inherited from CodeObject.)
Public propertyHasEOLOrPostAnnotations
True if the code object has any EOL or Postfix annotations.
(Inherited from CodeObject.)
Public propertyHasErrors
True if the code object has any error messages.
(Inherited from CodeObject.)
Public propertyHasFirstOnLineAnnotations
True if the code object has any annotations on separate lines.
(Inherited from CodeObject.)
Public propertyHasInferredType
True if the variable has an inferred ('var') type.
(Inherited from VariableDecl.)
Public propertyHasInfixComments
True if the code object has any Infix comments.
(Inherited from CodeObject.)
Public propertyHasInitialization
True if the variable has an initialization Expression.
(Inherited from VariableDecl.)
Public propertyHasMessages
True if the code object has any generated messages.
(Inherited from CodeObject.)
Public propertyHasNoIndentation
Determines if the code object has no indentation.
(Inherited from CodeObject.)
Public propertyHasNonEOLComments
True if the code object has any regular (non-doc) preceding (non-EOL, non-Infix, non-Postfix) comments.
(Inherited from CodeObject.)
Public propertyHasPostAnnotations
True if the code object has any postfix annotations.
(Inherited from CodeObject.)
Public propertyHasSharedType
True if the Deconstruction has a single shared 'var' type for all local variables, or False if each local variable declares its own type.
(Overrides MultiLocalDeclHasSharedType.)
Public propertyHasTerminator
Determines if the code object has a terminator character.
(Inherited from LocalDecl.)
Public propertyHasTerminatorDefault
True if the Statement has a terminator character by default.
(Inherited from VariableDecl.)
Public propertyHiddenRef
The hidden MethodRef (or UnresolvedRef) that represents the Deconstruct() method being called if the type being deconstructed isn't a tuple type.
(Overrides CodeObjectHiddenRef.)
Public propertyInfixComment
The infix comment for the code object (if any).
(Inherited from CodeObject.)
Public propertyInitialization
An optional initialization Expression.
(Inherited from VariableDecl.)
Public propertyIsConst
True if the local variable is const.
(Inherited from LocalDecl.)
Public propertyIsDiscard
Return True if the LocalDecl is a discard variable.
(Inherited from LocalDecl.)
Public propertyIsEndFirstOnLine
True if the closing paren or bracket is on a new line.
(Inherited from Statement.)
Public propertyIsFirstOnLine
Determines if the code object appears as the first item on a line.
(Inherited from CodeObject.)
Public propertyIsFirstOnLineDefault
True if the code object defaults to starting on a new line.
(Inherited from CodeObject.)
Public propertyIsGenerated
Determines if the code object is generated.
(Inherited from CodeObject.)
Public propertyIsGroupingSet
Determines if the 'grouping' (has parens or braces) status has been set.
(Inherited from CodeObject.)
Public propertyIsNewLinesSet
Determines if the newline count has been set on the code object.
(Inherited from CodeObject.)
Public propertyIsReadOnly
True if the local variable is readonly.
(Inherited from LocalDecl.)
Public propertyIsRef
True if the local variable is a ref.
(Inherited from LocalDecl.)
Public propertyIsRenderable
True if the CodeObject is renderable.
(Inherited from CodeObject.)
Public propertyIsSingleLine
Determines if the code object only requires a single line for display.
(Inherited from MultiLocalDecl.)
Public propertyIsSingleLineDefault
True if the code object only requires a single line for display by default.
(Inherited from MultiLocalDecl.)
Public propertyIsStatic
Always false for a local variable.
(Inherited from LocalDecl.)
Public propertyItem
Get the LocalDecl at the specified index.
(Inherited from MultiLocalDecl.)
Public propertyKeyword
The keyword associated with the Statement (null if none).
(Inherited from Statement.)
Public propertyLineNumber
The line number associated with the Deconstruction.
(Overrides MultiLocalDeclLineNumber.)
Public propertyLocalDecls
The list of LocalDecls.
(Inherited from MultiLocalDecl.)
Public propertyModifiers
Optional Modifiers.
(Overrides MultiLocalDeclModifiers.)
Public propertyName
The name of the variable.
(Inherited from VariableDecl.)
Public propertyNewLines
The number of newlines preceding the object (0 to N).
(Inherited from Statement.)
Public propertyParent
The parent CodeObject.
(Inherited from CodeObject.)
Public propertyPostfixComment
The postfix comment for the code object (if any).
(Inherited from CodeObject.)
Public propertyTerminator
The terminator character for the Statement.
(Inherited from Statement.)
Public propertyType
The type of the MultiLocalDecl.
(Inherited from MultiLocalDecl.)
Top
Methods
  NameDescription
Public methodAccept
Accept the specified visitor object for the current code object and it's children.
(Overrides MultiLocalDeclAccept(IVisitor).)
Public methodAcceptAnnotations(IVisitor)
Accept the specified visitor object for all regular (non-EOL, non-Infix, non-Postfix) annotations (comments, attributes, compiler directives).
(Inherited from CodeObject.)
Public methodAcceptAnnotations(IVisitor, AnnotationFlags)
Accept the specified visitor object for all specified Infix or Postfix annotations (comments, compiler directives).
(Inherited from CodeObject.)
Public methodAcceptEOLComments
Accept the specified visitor object for all EOL comments.
(Inherited from CodeObject.)
Public methodAcceptInfixComments
Accept the specified visitor object for all Infix comments.
(Inherited from CodeObject.)
Public methodAcceptInfixEOLComments
Accept the specified visitor object for all Infix EOL comments.
(Inherited from CodeObject.)
Public methodAdd(LocalDecl)
Add a LocalDecl.
(Overrides MultiLocalDeclAdd(LocalDecl).)
Public methodAdd(LocalDecl)
Add multiple LocalDecls.
(Inherited from MultiLocalDecl.)
Public methodAdd(String, Expression)
Add a new LocalDecl with the specified name and optional type.
(Overrides MultiLocalDeclAdd(String, Expression).)
Protected methodAddInternal (Inherited from MultiLocalDecl.)
Public methodAddRange
Add a collection of LocalDecls.
(Inherited from MultiLocalDecl.)
Public methodAddToDictionary
Add the CodeObject to the specified dictionary.
(Inherited from MultiLocalDecl.)
Public methodAssociateCommentWhenParsing
Determine if the specified comment should be associated with the current code object during parsing.
(Inherited from Statement.)
Public methodAsString
Render the entire code object as a string, using LFs for newlines.
(Inherited from CodeObject.)
Public methodAsText
Convert the code object to text with a trailing newline, and using CR/LF pairs for newlines (file format).
(Inherited from CodeObject.)
Public methodAsText(CodeWriter, CodeObjectRenderFlags) (Inherited from Statement.)
Public methodAsText(CodeObjectRenderFlags, Boolean, StackCodeWriterAlignmentState)
Convert the code object to text using the specified flags and format (file or string).
(Inherited from CodeObject.)
Protected methodAsTextAfter (Inherited from Statement.)
Public methodAsTextAnnotations(CodeWriter, CodeObjectRenderFlags)
Render all regular (non-EOL, non-Infix, non-Postfix, non-Message) annotations (comments, attributes, compiler directives).
(Inherited from CodeObject.)
Public methodAsTextAnnotations(CodeWriter, AnnotationFlags, CodeObjectRenderFlags)
Render all specified Infix or Postfix annotations (comments, compiler directives).
(Inherited from CodeObject.)
Protected methodAsTextArgument (Overrides StatementAsTextArgument(CodeWriter, CodeObjectRenderFlags).)
Protected methodAsTextArgumentPrefix (Overrides StatementAsTextArgumentPrefix(CodeWriter, CodeObjectRenderFlags).)
Protected methodAsTextBefore (Inherited from CodeObject.)
Protected methodAsTextConstantValue (Inherited from VariableDecl.)
Public methodAsTextEOLComments
Render all EOL comments.
(Inherited from CodeObject.)
Protected methodAsTextEvaluatedType (Inherited from CodeObject.)
Public methodAsTextInfixComments
Render all Infix comments with the specified mask.
(Inherited from CodeObject.)
Public methodAsTextInfixEOLComments
Render all Infix EOL comments.
(Inherited from CodeObject.)
Protected methodAsTextInitialization (Inherited from VariableDecl.)
Public methodAsTextLeftMostAnnotations
Render all regular annotations on the current object, or the left most binary operator.
(Inherited from CodeObject.)
Public methodAsTextLength
Determine the length of the code object if converted to a string using the specified flags.
(Inherited from CodeObject.)
Protected methodAsTextPrefix (Overrides MultiLocalDeclAsTextPrefix(CodeWriter, CodeObjectRenderFlags).)
Protected methodAsTextStatement (Overrides MultiLocalDeclAsTextStatement(CodeWriter, CodeObjectRenderFlags).)
Protected methodAsTextSuffix (Overrides MultiLocalDeclAsTextSuffix(CodeWriter, CodeObjectRenderFlags).)
Protected methodAsTextTerminator (Inherited from Statement.)
Public methodAsTextType (Inherited from VariableDecl.)
Public methodAttachAnnotation(Annotation, Boolean) (Inherited from CodeObject.)
Public methodAttachAnnotation(Annotation, AnnotationFlags, Boolean)
Attach an Annotation to the CodeObject at the specified position.
(Inherited from CodeObject.)
Public methodAttachComment
Create a comment object and attach it to the code object.
(Inherited from CodeObject.)
Public methodAttachEOLComment
Create an EOL comment object and attach it to the code object.
(Inherited from CodeObject.)
Public methodAttachMessage
Create a message and attach it to the code object.
(Inherited from CodeObject.)
Public methodCalculateMetrics
Calculate metrics for this code object and its children.
(Inherited from CodeObject.)
Protected methodCheckForAlignment
Check for alignment of any EOL comments.
(Inherited from CodeObject.)
Public methodClone
Deep-clone the code object.
(Overrides MultiLocalDeclClone.)
Protected methodCloneField(Object, Object)
Clone a field of a code object, including setting the parent.
(Inherited from CodeObject.)
Protected methodCloneFieldT(T, T)
Clone a field of a code object, including setting the parent.
(Inherited from CodeObject.)
Public methodCopyFormatting
Copy formatting from another code object.
(Inherited from CodeObject.)
Public methodCreateAnnotations
Create the list of child Annotations, or return the existing one.
(Inherited from CodeObject.)
Public methodCreateRef
This method isn't supported for this type.
(Inherited from MultiLocalDecl.)
Protected methodDefaultFormat
Default format the code object.
(Inherited from CodeObject.)
Protected methodDefaultFormatField (Inherited from Statement.)
Public methodDefaultNewLines
Determine a default of 1 or 2 newlines when adding items to a Block.
(Inherited from CodeObject.)
Public methodDispose
Dispose the CodeObject.
(Inherited from CodeObject.)
Public methodEquals
Determines whether the specified object is equal to the current object.
(Inherited from Object.)
Public methodEvaluateType
Evaluate the type of the LocalDecl.
(Inherited from LocalDecl.)
Public methodEvaluateTypeOrNamespace
Evaluate the type or namespace associated with the code object.
(Inherited from CodeObject.)
Protected methodFinalize
Allows an object to try to free resources and perform other cleanup operations before it is reclaimed by garbage collection.
(Inherited from Object.)
Public methodFindParentT
Find the parent object of the specified type.
(Inherited from CodeObject.)
Public methodFindParentMethod
Find the parent method (or anonymous method or lambda) of the current code object.
(Inherited from CodeObject.)
Public methodFindParentMethodOrType
Find the parent method (or anonymous method or lambda) or type of the current code object.
(Inherited from CodeObject.)
Public methodGetAllChildrenT
Get an enumerator for all children objects of type T in the CodeObject and in any child CodeObjects (recursively).
(Inherited from CodeObject.)
Public methodGetAttribute
Returns the first attribute expression (Call or ConstructorRef) with the specified name on the CodeObject.
(Inherited from CodeObject.)
Public methodGetComment
Get the comment that satisfies the specified predicate.
(Inherited from CodeObject.)
Public methodGetDeconstructionType
Get the type being deconstructed (the type of the initialization expression, or the collection element type if used in a ForEach).
Public methodGetDescription
Get a short text description of the CodeObject. This is generally the shortest text representation that uniquely identifies objects, even if they have the same name, for example: type or return type, name, type parameters, parameters.
(Inherited from CodeObject.)
Public methodGetDocSummary
Returns the DocSummary documentation comment, or null if none exists.
(Inherited from CodeObject.)
Public methodGetEnumerator
Enumerate the child FieldDecls.
(Inherited from MultiLocalDecl.)
Public methodGetFullName
Get the full name of the VariableDecl, including the namespace name (if any).
(Inherited from VariableDecl.)
Public methodGetHashCode
Serves as the default hash function.
(Inherited from Object.)
Public methodGetIndentLevel
Get the indent level of this object.
(Inherited from CodeObject.)
Public methodGetIndentSpaceCount
Get the current indent in spaces.
(Inherited from CodeObject.)
Public methodGetInferredType
Determine the type of an inferred ('var') type.
(Overrides MultiLocalDeclGetInferredType(VarTypeRef).)
Public methodGetNamespace
Get the Namespace for this CodeObject.
(Inherited from CodeObject.)
Public methodGetType
Gets the Type of the current instance.
(Inherited from Object.)
Public methodGetTypeOfChildAtIndex
Get the type of the child local variable declaration with the specified index.
Public methodGetTypeRef
Get a TypeRef for the type with the specified full name, with caching (generally used for System types).
(Inherited from CodeObject.)
Public methodGetValue
Get the constant value of the variable (if any).
(Inherited from VariableDecl.)
Public methodGetWorstMessageType
Get the type of the worst attached message.
(Inherited from CodeObject.)
Protected methodHasAnnotationT (Inherited from CodeObject.)
Public methodHasAttribute
Returns true if the attribute with the specified name exists on the object, otherwise false.
(Inherited from CodeObject.)
Public methodHasUnresolvedRef
Returns true if the code object is an UnresolvedRef or has any UnresolvedRef children.
(Inherited from MultiLocalDecl.)
Protected methodIsChildIndented
Returns true if the specified child object is indented from the parent.
(Inherited from CodeObject.)
Protected methodIsChildPrefix
Returns true if the specified child object is prefixed to the current object.
(Inherited from CodeObject.)
Protected methodMemberwiseClone
Creates a shallow copy of the current Object.
(Inherited from Object.)
Public methodMoveAllComments
Move all (regular or EOL) comments from the specified token to the current code object, converting any EOL comments to regular comments (which will be rendered inline if necessary).
(Inherited from CodeObject.)
Public methodMoveAnnotations
Move any annotations from the specified location to the specified destination location.
(Inherited from CodeObject.)
Public methodMoveComments(Token)
Move any non-EOL comments from the specified token to the current code object.
(Inherited from CodeObject.)
Public methodMoveComments(Token, Boolean)
Move any non-EOL comments from the specified token to the current code object.
(Inherited from CodeObject.)
Public methodMoveCommentsAsPost
Move any non-EOL comments from the specified token to the current code object as Post comments.
(Inherited from CodeObject.)
Public methodMoveEOLAndPostAnnotations
Move any EOL or Postfix annotations from the specified code object to the current code object.
(Inherited from CodeObject.)
Public methodMoveEOLComment(CodeObject)
Move any EOL comment from the specified code object to the current code object.
(Inherited from CodeObject.)
Public methodMoveEOLComment(Token)
Move any EOL comment from the specified token to the current code object.
(Inherited from CodeObject.)
Public methodMoveEOLComment(Token, Boolean, Boolean)
Move any EOL comment from the specified token to the current code object.
(Inherited from CodeObject.)
Public methodMoveEOLCommentAsInfix
Move any EOL comment from the specified token to the current code object as an Infix EOL comment.
(Inherited from CodeObject.)
Public methodMoveFormatting(CodeObject)
Move formatting from the specified code object to the current object.
(Inherited from CodeObject.)
Public methodMoveFormatting(Token)
Move formatting from the specified token to the current object.
(Inherited from CodeObject.)
Protected methodMoveLocationAndComment
Move NewLines, LineNumber, Column, and any EOL comment from the specified Token.
(Inherited from VariableDecl.)
Public methodMovePrefixAnnotationsAs
Move any prefix annotations on the specified code object to the current code object as the specified type of annotation.
(Inherited from CodeObject.)
Protected methodNotifyListedAnnotationAdded
Propagate the listed annotation to the parent CodeUnit and above.
(Inherited from CodeObject.)
Protected methodNotifyListedAnnotationRemoved
Remove the listed annotation from the parent CodeUnit and above.
(Inherited from CodeObject.)
Public methodStatic memberParse
Parse a Deconstruction.
Protected methodParseAnnotations(Parser, CodeObject)
Parse annotations - specifically, compiler directives around things such as TypeParameters or ParameterDecls.
(Inherited from CodeObject.)
Protected methodParseAnnotations(Parser, CodeObject, Boolean, Boolean)
Parse any comments, attributes, compiler directives.
(Inherited from CodeObject.)
Protected methodParseExpectedToken
Parse the specified expected token, attaching a parse error to the current object if it doesn't exist.
(Inherited from CodeObject.)
Protected methodParseInitialization
Parse the initialization (if any).
(Inherited from VariableDecl.)
Protected methodParseKeywordAndArgument (Inherited from Statement.)
Protected methodParseName(Parser, CodeObject) (Inherited from LocalDecl.)
Protected methodParseName(Parser, String) (Inherited from VariableDecl.)
Protected methodParseTerminator
Parse the terminator at the end of a Statement.
(Inherited from Statement.)
Protected methodParseType
This method is used when parsing forwards starting with the type is possible.
(Inherited from VariableDecl.)
Protected methodParseUnusedAnnotations
Parse annotations from the Unused list.
(Inherited from CodeObject.)
Protected methodParseUnusedType
This method is used when we must parse backwards through the Unused list to get a type.
(Inherited from Statement.)
Public methodStatic memberPeekDeconstruction
Peek ahead at the input tokens to determine if they look like a valid Deconstruction.
Public methodRemoveAllAnnotationsT
Remove all annotations of the specified type from this object.
(Inherited from CodeObject.)
Public methodRemoveAllAnnotationsWhereT
Remove all annotations from this object where the specified predicate is true.
(Inherited from CodeObject.)
Public methodRemoveAllMessages
Remove all messages from this object, or optionally only from the specified source.
(Inherited from CodeObject.)
Public methodRemoveAttribute
Remove the attribute expression with the specified name.
(Inherited from CodeObject.)
Public methodRemoveFromDictionary
Remove the CodeObject from the specified dictionary.
(Inherited from MultiLocalDecl.)
Public methodResolve(ResolveFlags)
Resolve all child symbolic references.
(Inherited from CodeObject.)
Public methodResolve(ResolveCategory, ResolveFlags)
Resolve all child symbolic references, using the specified ResolveCategory and ResolveFlags.
(Overrides MultiLocalDeclResolve(ResolveCategory, ResolveFlags).)
Public methodResolveAttributes
Resolve any attached attributes.
(Inherited from CodeObject.)
Public methodResolveDocComments
Resolve any references in attached documentation comments.
(Inherited from CodeObject.)
Public methodResolveGotoTargetUp
Resolve child code objects that match the specified name are valid goto targets, moving up the tree until a complete match is found.
(Inherited from CodeObject.)
Public methodResolveRef
Resolve child code objects that match the specified name.
(Inherited from MultiLocalDecl.)
Public methodResolveRefUp
Resolve child code objects that match the specified name, moving up the tree until a complete match is found.
(Inherited from CodeObject.)
Public methodResolveRefUpSkipMethodBody
Similar to ResolveRefUp(String, Resolver), but skips trying to resolve the symbol in the body or parameters of a method (used for resolving parameter types).
(Inherited from CodeObject.)
Protected methodSetField(Object, Object, Boolean)
Set a field of a code object, including setting the parent, and optional formatting.
(Inherited from CodeObject.)
Protected methodSetFieldT(ChildListT, ChildListT)
Set a ChildList collection field of a code object, including setting the parent.
(Inherited from CodeObject.)
Protected methodSetFieldT(T, T, Boolean)
Set a field of a code object, including setting the parent, and optional formatting.
(Inherited from CodeObject.)
Protected methodSetFormatFlag (Inherited from CodeObject.)
Protected methodSetLineCol(CodeObject)
Set the line and column numbers to those in the specified CodeObject.
(Inherited from CodeObject.)
Protected methodSetLineCol(Token)
Set the line and column numbers to those in the specified token.
(Inherited from CodeObject.)
Public methodSetNewLines
Special method to set the newline count without setting the NewLinesSet flag.
(Inherited from CodeObject.)
Protected methodSetStartLineCol
Set the starting line and column numbers to those in the specified token (used by some code objects with prefixes such as modifiers).
(Inherited from CodeObject.)
Protected methodSetTypeFromParentMulti (Inherited from LocalDecl.)
Public methodToString
Render the type of the code object and its description as a string.
(Inherited from CodeObject.)
Public methodUpdateAllDeclExpressions
Recursively update the dictionary of names in the specified Block by either adding or removing (as specified by the 2nd parameter) all appropriate nested INamedCodeObjects expressions in the current CodeObject tree (specifically implemented for LocalDeclExpr expression objects).
(Inherited from VariableDecl.)
Protected methodUpdateLineCol
Update the line and column numbers according to the current positions in the CodeWriter, if the UpdateLineCol flag is set.
(Inherited from CodeObject.)
Top
Fields
  NameDescription
Protected field_annotations
Any Annotations (Comments, DocComments, Attributes, or Messages) associated with the CodeObject (null if none).
(Inherited from CodeObject.)
Protected field_columnNumber
The starting column number associated with the CodeObject if parsed from or written to text form.
(Inherited from CodeObject.)
Protected field_deconstructMethodRef
Protected field_formatFlags
Formatting flags - for line feeds, braces, etc.
(Inherited from CodeObject.)
Protected field_initialization (Inherited from VariableDecl.)
Protected field_lineNumber
The starting line number associated with the CodeObject if parsed from or written to text form.
(Inherited from CodeObject.)
Protected field_localDecls (Inherited from MultiLocalDecl.)
Protected field_modifiers (Inherited from LocalDecl.)
Protected field_name (Inherited from VariableDecl.)
Protected field_parent
The parent CodeObject.
(Inherited from CodeObject.)
Protected field_type (Inherited from VariableDecl.)
Public fieldStatic memberParseTokenEnd
The token used to parse the end of the arguments.
Public fieldStatic memberParseTokenSeparator
The token used to separate LocalDecls in the Deconstruction.
Public fieldStatic memberParseTokenStart
The token used to parse the start of the arguments.
Top
Remarks
The Deconstruction can either have a Type for each LocalDecl (in which case it's own Type will be null), or a single Type for all of them (in which case each individual LocalDecl will always have a matching Type). The LocalDecls can't have their own Initialization members, while the Initialization of the Desconstruction should always be a TupleRef with a number of fields matching the number of LocalDecls, and it's Name will be null. LocalDecls can be omitted using the Discard syntax of "_", which will be stored as a null object. No Modifiers are legal on the Deconstruction or the LocalDecls. If the LocalDecls are sharing the Type of the MultiLocalDecl, then any change to it is propagated to all of the LocalDecls, and trying to change the Type of a LocalDecl will throw an exception. Possible formats: (type1 name1, type2 name2...) = var (name1, _, name3...) = for ([either of above] in [collection/array of tuples]) NOTE: The format '(expr1, expr2...) = ' is also a legal type of deconstruction, but it's handled by the DeconstructionExpr class, because it's an Expression and NOT a Statement or a variable declaration.
See Also