This is a keyword—it is used in properties. In properties in C#, we enjoy a clear and easy-to-read syntax form—and "value" is a part of this.
With parameters in a property, we can use the special keyword "value." This way we do not need to specify the type. The type is determined by the enclosing property type.
In this program, each property has a set accessor that uses the value parameter. We see 2 properties, PropertyInt
and PropertyString
.
PropertyInt
set accessor, the value parameter is written to the console.PropertyString
, the value is a string
. It is checked for a valid state. The program writes the values.null
to an empty string
literal.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); } }5 1 test
The C# specification refers to "value" in its description of Accessors in Properties. On page 481, it states "The implicit parameter of a set accessor" is always value.
Set_PropertyInt
and Get_PropertyInt
.We examined the value parameter in properties and referenced the language specification. We then discovered the underlying implementation of the value parameter in properties.