Get and set accessors let you read and change values inside an object safely.
Get and set accessors in C Sharp (C#)
Start learning this pattern below
Jump into concepts and practice - no test required
or
Test this pattern10 questions across easy, medium, and hard to know if this pattern is strong
Introduction
Syntax
C Sharp (C#)
public class ClassName { private DataType fieldName; public DataType PropertyName { get { return fieldName; } set { fieldName = value; } } }
get returns the value.
set assigns a new value using the keyword value.
Examples
Name that gets and sets a private field name.C Sharp (C#)
public class Person { private string name; public string Name { get { return name; } set { name = value; } } }
set to only allow non-negative ages.C Sharp (C#)
public class Person { private int age; public int Age { get { return age; } set { if (value >= 0) age = value; } } }
C Sharp (C#)
public class Person { public string Name { get; set; } // Auto-implemented property }
Sample Program
This program creates a Person object and sets the age. It shows how the set accessor blocks negative values and prints a message.
C Sharp (C#)
using System; public class Person { private int age; public int Age { get { return age; } set { if (value >= 0) age = value; else Console.WriteLine("Age cannot be negative."); } } } class Program { static void Main() { Person p = new Person(); p.Age = 25; Console.WriteLine($"Age: {p.Age}"); p.Age = -5; // This should show a warning Console.WriteLine($"Age after invalid set: {p.Age}"); } }
Important Notes
You can make a property read-only by only providing a get accessor.
Use value inside set to get the new value being assigned.
Auto-implemented properties are quick but you cannot add extra logic inside get or set.
Summary
Get and set accessors let you control how values are read and changed in a class.
You can add checks or extra actions inside get or set.
Auto-properties provide a quick way to create simple properties without extra code.
Practice
1. What is the main purpose of
get and set accessors in a C# class?easy
Solution
Step 1: Understand the role of accessors
Get and set accessors are used to read and write property values in a controlled way.Step 2: Differentiate from other class members
They are not methods or variables themselves but control access to data.Final Answer:
To control how a property value is read and changed -> Option DQuick Check:
Get/set control property access = A [OK]
Hint: Get/set control property reading and writing [OK]
Common Mistakes:
- Confusing accessors with methods
- Thinking they create variables
- Assuming they handle exceptions automatically
2. Which of the following is the correct syntax for an auto-implemented property with get and set accessors in C#?
easy
Solution
Step 1: Identify correct property syntax
Auto-properties use curly braces with get and set accessors separated by semicolons.Step 2: Check each option
public int Age { get; set; } matches the correct syntax: public int Age { get; set; }Final Answer:
public int Age { get; set; } -> Option CQuick Check:
Auto-property syntax = C [OK]
Hint: Auto-properties use braces with get; set; inside [OK]
Common Mistakes:
- Using parentheses instead of braces
- Missing semicolons after get and set
- Writing get and set without braces
3. What will be the output of the following C# code?
class Person {
private string name;
public string Name {
get { return name; }
set { name = value.ToUpper(); }
}
}
var p = new Person();
p.Name = "alice";
Console.WriteLine(p.Name);medium
Solution
Step 1: Analyze the set accessor behavior
The set accessor converts the assigned value to uppercase before storing it in the private field.Step 2: Analyze the get accessor output
The get accessor returns the stored uppercase string.Final Answer:
ALICE -> Option BQuick Check:
Set converts to uppercase, output = ALICE [OK]
Hint: Set modifies value before storing, get returns stored value [OK]
Common Mistakes:
- Ignoring the ToUpper() call in set
- Assuming original case is preserved
- Confusing field and property names
4. Identify the error in this property definition:
public int Score {
get { return score; }
set score = value; }
}medium
Solution
Step 1: Check set accessor syntax
The set accessor must use braces { } around its code block, but here it is missing the opening brace.Step 2: Confirm other parts
The return statement has a semicolon, private field may be declared elsewhere, and property names are PascalCase by convention.Final Answer:
Incorrect set accessor syntax -> Option AQuick Check:
Set accessor needs braces = A [OK]
Hint: Set accessor must have braces around code block [OK]
Common Mistakes:
- Omitting braces in set accessor
- Confusing property and field names
- Assuming property names must be lowercase
5. You want to create a property
Age that only allows values between 0 and 120. Which implementation correctly enforces this using get and set accessors?hard
Solution
Step 1: Check validation logic in set accessor
private int age; public int Age { get { return age; } set { if (value >= 0 && value <= 120) age = value; } } checks if value is between 0 and 120 before assigning it to the private field.Step 2: Compare other options
The auto-implemented property has no validation. The simple backing field assignment lacks checks. The partial validation only checks if value > 0, missing the upper limit.Final Answer:
private int age; public int Age { get { return age; } set { if (value >= 0 && value <= 120) age = value; } } -> Option AQuick Check:
Set accessor validates range 0-120 = B [OK]
Hint: Use if condition in set to validate value range [OK]
Common Mistakes:
- Not validating upper limit
- Assigning value without checks
- Assuming auto-properties validate automatically
