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.