C# Error
CS0843 – Auto-implemented property ‘{0}’ must be fully assigned before control is returned to the caller. Consider updating to language version ‘{1}’ to auto-default the property.
Reason for the Error & Solution
Backing field for automatically implemented property ‘name’ must be fully assigned before control is returned to the caller. Consider calling the parameterless constructor from a constructor initializer.
To assign a value to an automatically-implemented property from a constructor, you must first invoke the parameterless constructor to create the object.
To correct this error
- Add a call to the parameterless constructor in a constructor initializer as shown in the following example. Note the use of
: this()
. For more information, see .
Example
The following code generates CS0843:
// cs0843.cs
struct S
{
public int AIProp { get; set; }
public S(int i){} //CS0843
// Try the following lines instead.
// public S(int i) : this()
// {
// AIProp = i;
// }
}
class Test
{
static int Main()
{
return 1;
}
}