Bird
Raised Fist0
C Sharp (C#)programming~10 mins

Properties vs fields in C Sharp (C#) - Interactive Practice

Choose your learning style10 modes available

Start learning this pattern below

Jump into concepts and practice - no test required

or
Recommended
Test this pattern10 questions across easy, medium, and hard to know if this pattern is strong
Practice - 5 Tasks
Answer the questions below
1fill in blank
easy

Complete the code to declare a public field named 'age' of type int.

C Sharp (C#)
public class Person {
    public [1] age;
}
Drag options to blanks, or click blank then click option'
Aint
BAge
Cstring
Dprivate
Attempts:
3 left
💡 Hint
Common Mistakes
Using a capitalized name like 'Age' as a type.
Using 'string' instead of 'int' for an age field.
Using access modifiers like 'private' instead of a type.
2fill in blank
medium

Complete the code to declare a public property named 'Age' with get and set accessors.

C Sharp (C#)
public class Person {
    public int [1] { get; set; }
}
Drag options to blanks, or click blank then click option'
Aage
BageValue
CAGE
DAge
Attempts:
3 left
💡 Hint
Common Mistakes
Using lowercase 'age' for a property name.
Using all uppercase 'AGE' which is uncommon.
Using a different name like 'ageValue' without reason.
3fill in blank
hard

Fix the error in the property declaration by completing the code.

C Sharp (C#)
public class Person {
    private int _age;
    public int Age {
        get { return [1]; }
        set { _age = value; }
    }
}
Drag options to blanks, or click blank then click option'
A_age
BAge
Cvalue
Dage
Attempts:
3 left
💡 Hint
Common Mistakes
Returning the property name 'Age' inside its own getter causes recursion.
Returning 'value' inside getter is incorrect.
Using 'age' without underscore when the field is '_age'.
4fill in blank
hard

Fill both blanks to create a property 'Name' with a private field '_name' and a setter that trims whitespace.

C Sharp (C#)
public class Person {
    private string [1];
    public string Name {
        get { return [2]; }
        set { [2] = value.Trim(); }
    }
}
Drag options to blanks, or click blank then click option'
A_name
BName
C_age
Dname
Attempts:
3 left
💡 Hint
Common Mistakes
Using the property name 'Name' inside getter or setter causes recursion.
Using a different field name in getter and setter.
Not trimming the value in setter.
5fill in blank
hard

Fill all three blanks to create a read-only property 'IsAdult' that returns true if 'Age' is 18 or more.

C Sharp (C#)
public class Person {
    public int Age { get; set; }
    public bool [1] {
        get { return Age [2] [3]; }
    }
}
Drag options to blanks, or click blank then click option'
AIsAdult
B>=
C18
DAge
Attempts:
3 left
💡 Hint
Common Mistakes
Using 'Age' as property name instead of 'IsAdult'.
Using '<' or '>' instead of '>='.
Comparing to a wrong number.

Practice

(1/5)
1. What is the main difference between a field and a property in C#?
easy
A. Properties store data directly, fields control access to data.
B. Fields and properties are exactly the same in C#.
C. Fields store data directly, properties control access to data.
D. Properties can only be used in structs, fields only in classes.

Solution

  1. Step 1: Understand what a field does

    A field is a variable inside a class that holds data directly.
  2. Step 2: Understand what a property does

    A property provides controlled access to data, often using get and set methods.
  3. Final Answer:

    Fields store data directly, properties control access to data. -> Option C
  4. Quick Check:

    Field = direct data, Property = controlled access [OK]
Hint: Fields hold data; properties manage access to it. [OK]
Common Mistakes:
  • Confusing fields and properties as the same.
  • Thinking properties store data directly.
  • Believing fields control access like properties.
2. Which of the following is the correct syntax to declare a property named Age with a private field in C#?
easy
A. int Age; int Age { get; set; }
B. private int Age; public int Age { get; set; }
C. public int age; public int Age;
D. private int age; public int Age { get { return age; } set { age = value; } }

Solution

  1. Step 1: Identify private field declaration

    The private field should be lowercase (e.g., age) and declared as private int age;.
  2. Step 2: Identify property syntax

    The property Age uses get and set to access the private field correctly.
  3. Final Answer:

    private int age; public int Age { get { return age; } set { age = value; } } -> Option D
  4. Quick Check:

    Private field + property with get/set = correct syntax [OK]
Hint: Private field lowercase, property uppercase with get/set. [OK]
Common Mistakes:
  • Using same name for field and property causing errors.
  • Missing get or set in property.
  • Declaring fields as public when they should be private.
3. What will be the output of this C# code?
class Person {
  private string name = "Alice";
  public string Name {
    get { return name; }
    set { name = value; }
  }
}

var p = new Person();
p.Name = "Bob";
Console.WriteLine(p.Name);
medium
A. Bob
B. name
C. Alice
D. Compilation error

Solution

  1. Step 1: Understand property set operation

    The line p.Name = "Bob"; calls the set accessor, changing the private field name to "Bob".
  2. Step 2: Understand property get operation

    The line Console.WriteLine(p.Name); calls the get accessor, returning the updated value "Bob".
  3. Final Answer:

    Bob -> Option A
  4. Quick Check:

    Property set changes value, get returns updated value [OK]
Hint: Property set changes field; get returns updated value. [OK]
Common Mistakes:
  • Assuming output is original field value.
  • Confusing field name with property name.
  • Thinking code causes compilation error.
4. Identify the error in this code snippet:
class Car {
  public int speed;
  public int Speed {
    get { return speed; }
    set { speed = value; }
  }
}

var c = new Car();
c.Speed = 50;
Console.WriteLine(c.speed);
medium
A. Accessing field directly breaks encapsulation.
B. Field and property have the same name causing conflict.
C. No error; code works fine.
D. Property must be static to access field.

Solution

  1. Step 1: Check field and property names

    The field is speed and property is Speed, so no naming conflict.
  2. Step 2: Analyze direct field access

    Accessing c.speed directly bypasses the property, which can break encapsulation and safety.
  3. Final Answer:

    Accessing field directly breaks encapsulation. -> Option A
  4. Quick Check:

    Use properties to protect data, not direct field access [OK]
Hint: Avoid direct field access; use properties for safety. [OK]
Common Mistakes:
  • Thinking same names cause error (case-sensitive).
  • Believing direct field access is always safe.
  • Assuming property must be static.
5. You want to create a class BankAccount where the Balance can be read publicly but only changed inside the class. Which is the best way to declare Balance?
hard
A. public decimal Balance; // public field
B. private decimal balance; public decimal Balance { get; private set; }
C. public decimal Balance { private get; set; }
D. private decimal Balance; public decimal balance { get; set; }

Solution

  1. Step 1: Understand access needs

    Balance should be readable publicly but only settable privately inside the class.
  2. Step 2: Choose property with private set

    Using public decimal Balance { get; private set; } allows public reading but restricts setting to inside the class.
  3. Final Answer:

    private decimal balance; public decimal Balance { get; private set; } -> Option B
  4. Quick Check:

    Public get + private set = controlled access [OK]
Hint: Use property with private set for controlled write access. [OK]
Common Mistakes:
  • Using public field exposes data to unwanted changes.
  • Setting private get hides data from outside.
  • Confusing field and property naming conventions.