-
Notifications
You must be signed in to change notification settings - Fork 4.2k
Closed
Labels
Milestone
Description
Proposal: parameterless-struct-constructors.md
Branch: features/struct-ctors
-
-langversion:- for parameterless ctor (see
PublicParameterlessConstructor) - for field initializers (see
FieldInitializers_01)
- for parameterless ctor (see
-
publicand non-publicctors declared in source (seePublicParameterlessConstructorvs.NonPublicParameterlessConstructor_01) -
externandunsafeare valid ctor modifiers -
: this()and: base()initializers:-
: base()initializer disallowed -
: this()initializer allowed from other ctors (seeThisInitializer_01) -
: this(arg0, ...)initializer allowed from parameterless ctor (seeThisInitializer_02)
-
-
record structparameterless ctor must include: this(arg0, ...)(seeTypeDeclaration_ParameterlessConstructor_OtherConstructors) -
defaultignores parameterless ctor -
new()invokes parameterless ctor:- from
new S()andnew S { ... }(seePublicParameterlessConstructor) - from
new S()andnew S { ... }in expression tree (seeExpressionTrees) - from
new T()withwhere T : structandwhere T : new()(seePublicParameterlessConstructor)
- from
- all fields assigned:
- all fields have initializers if any have initializers and no ctors (see
FieldInitializers_01andFieldInitializers_02) - all fields have initializers or are explicitly assigned in each explicit ctor (see
FieldInitializers_01andFieldInitializers_02)
- all fields have initializers if any have initializers and no ctors (see
- field initializers and initialization order with:
- no constructors (see
FieldInitializers_None) - explicit parameterless ctor (see
FieldInitializers_None) - explicit ctor with parameters (see
FieldInitializers_None) - explicit ctor with
: this()initializer with/without parameterless ctor (seeThisInitializer_03) - explicit parameterless ctor with
: this(arg0, ...)initializer (seeThisInitializer_03)
- no constructors (see
- field initializers and initialization order on
record structwith cases above and: (seeTypeDeclaration_ParameterlessConstructor_Initializers)- no
() -
() -
(arg0, ...)
- no
- nullability analysis (initial state of fields in ctor bodies) for field initializer cases above (see
NullableAnalysis_*) - error for
new S()in parameter default value ifShas parameterless ctor (seeParameterDefaultValues_*) - analyzer checks runtime capability and warns for
new T()withwhere T : structorwhere T : new()on desktop framework: dotnet/roslyn-analyzers/issues/5272
Reactions are currently unavailable
Metadata
Metadata
Assignees
Labels
Type
Projects
Status
Active/Investigating