C-Sharp | Java | Python | Swift | GO | WPF | Ruby | Scala | F# | JavaScript | SQL | PHP | Angular | HTML
In the C# language, we need to declare a type for a parameter in a parameter list. With "value" in property setters, we omit this. The type of value is determined by the enclosing property type.
Example. In this program, each property has a set accessor that uses the value parameter. In the first property, the value parameter is written to the console. In the second, the value is a string. It is checked for a valid state.
C# program that uses value keyword
using System;
class Program
{
int PropertyInt
{
get
{
return 1;
}
set
{
Console.WriteLine(value);
}
}
string _backing;
string PropertyString
{
get
{
return this._backing;
}
set
{
if (value == null)
{
throw new ArgumentNullException("value");
}
this._backing = value;
}
}
static void Main()
{
Program program = new Program();
// Use PropertyInt.
program.PropertyInt = 5;
Console.WriteLine(program.PropertyInt);
// Use PropertyString.
program.PropertyString = "test";
Console.WriteLine(program.PropertyString);
}
}
Output
5
1
test



You can assign value. This is not common, but you can assign the "value" parameter to a new value. So if you want to change a "value" of null to an empty string literal in the second property above, this is possible.
Discussion. The C# specification refers to the value parameter in its description of Accessors in section 10.7 Properties. On page 481, it states "The implicit parameter of a set accessor is always named value."
Also, it might help with understanding how the C# language works to investigate how "value" is implemented here. Properties are actually compiled into methods such as Set_PropertyInt and Get_PropertyInt.
Then: The set method has a regular formal parameter list. The formal parameter has the identifier "value".
Summary. In this example, we examined the value parameter in properties. We looked at a code example, referenced the language specification. We then discovered the underlying implementation of the value parameter in properties.