Lambda for getter and setter of property

C#C# 6.0

C# Problem Overview


In C# 6.0 I can write:

public int Prop => 777;

But I want to use getter and setter. Is there a way to do something kind of the next?

public int Prop {
   get => propVar;
   set => propVar = value;
}

C# Solutions


Solution 1 - C#

First of all, that is not lambda, although syntax is similar.

It is called "expression-bodied members". They are similar to lambdas, but still fundamentally different. Obviously they can't capture local variables like lambdas do. Also, unlike lambdas, they are accessible via their name:) You will probably understand this better if you try to pass an expression-bodied property as a delegate.

There is no such syntax for setters in C# 6.0, but C# 7.0 introduces it.

private int _x;
public int X
{
    get => _x;
    set => _x = value;
}

Solution 2 - C#

C# 7 brings support for setters, amongst other members:

> # More expression bodied members > > Expression bodied methods, properties etc. are a big hit in C# 6.0, > but we didn’t allow them in all kinds of members. C# 7.0 adds > accessors, constructors and finalizers to the list of things that can > have expression bodies: > > class Person > { > private static ConcurrentDictionary names = new ConcurrentDictionary(); > private int id = GetId(); >
> public Person(string name) => names.TryAdd(id, name); // constructors > ~Person() => names.TryRemove(id, out _); // finalizers > public string Name > { > get => names[id]; // getters > set => names[id] = value; // setters > } > }

Solution 3 - C#

There is no such syntax, but the older syntax is pretty similar:

	private int propVar;
	public int Prop 
	{
		get { return propVar; }
		set { propVar = value; }
	}

Or

public int Prop { get; set; }

Attributions

All content for this solution is sourced from the original question on Stackoverflow.

The content on this page is licensed under the Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license.

Content TypeOriginal AuthorOriginal Content on Stackoverflow
QuestionDenis535View Question on Stackoverflow
Solution 1 - C#Diligent Key PresserView Answer on Stackoverflow
Solution 2 - C#user247702View Answer on Stackoverflow
Solution 3 - C#Marcin IwanowskiView Answer on Stackoverflow