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

Instance fields and state in C Sharp (C#) - Interactive Code 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 an instance field named 'count' of type int.

C Sharp (C#)
public class Counter {
    private [1] count;
}
Drag options to blanks, or click blank then click option'
Aint
Bstatic
Cstring
Dvoid
Attempts:
3 left
💡 Hint
Common Mistakes
Using 'void' as a type for a field.
Using 'static' keyword instead of a type.
Using 'string' when the field should hold numbers.
2fill in blank
medium

Complete the code to initialize the instance field 'count' to zero in the constructor.

C Sharp (C#)
public class Counter {
    private int count;
    public Counter() {
        [1] = 0;
    }
}
Drag options to blanks, or click blank then click option'
Athis
BCounter
Cvoid
Dcount
Attempts:
3 left
💡 Hint
Common Mistakes
Using the class name 'Counter' instead of the field name.
Using 'this' alone without the field name.
Using 'void' which is not a variable.
3fill in blank
hard

Fix the error in the method to correctly increment the instance field 'count'.

C Sharp (C#)
public class Counter {
    private int count;
    public void Increment() {
        [1]++;
    }
}
Drag options to blanks, or click blank then click option'
AIncrement
BCounter
Ccount
Dthis
Attempts:
3 left
💡 Hint
Common Mistakes
Trying to increment the class name 'Counter'.
Using the method name 'Increment' as a variable.
Using 'this' alone without the field name.
4fill in blank
hard

Fill both blanks to create a method that returns the current value of the instance field 'count'.

C Sharp (C#)
public class Counter {
    private int count;
    public [1] GetCount() {
        return [2];
    }
}
Drag options to blanks, or click blank then click option'
Aint
Bvoid
Ccount
DCounter
Attempts:
3 left
💡 Hint
Common Mistakes
Using 'void' as return type when the method returns a value.
Returning the class name instead of the field.
Returning nothing or wrong variable.
5fill in blank
hard

Fill all three blanks to define a class with an instance field, a constructor that sets it, and a method that returns it.

C Sharp (C#)
public class Person {
    private string [1];
    public Person(string [2]) {
        this.name = [2];
    }
    public string GetName() {
        return [3];
    }
}
Drag options to blanks, or click blank then click option'
Aname
Dperson
Attempts:
3 left
💡 Hint
Common Mistakes
Using different names for the field and parameter causing confusion.
Not using 'this' to distinguish the field from the parameter.
Returning a variable that does not exist.

Practice

(1/5)
1. What is the main purpose of an instance field in a C# class?
easy
A. To store data unique to each object created from the class
B. To define a method that all objects share
C. To create a temporary variable inside a method
D. To hold data shared by all objects of the class

Solution

  1. Step 1: Understand what instance fields represent

    Instance fields hold data that belongs to each individual object, not shared across all objects.
  2. Step 2: Differentiate from static fields and methods

    Static fields hold shared data, methods define behavior, and local variables are temporary inside methods.
  3. Final Answer:

    To store data unique to each object created from the class -> Option A
  4. Quick Check:

    Instance field = unique object data [OK]
Hint: Instance fields hold unique data per object, not shared [OK]
Common Mistakes:
  • Confusing instance fields with static fields
  • Thinking methods are instance fields
  • Mixing local variables with instance fields
2. Which of the following is the correct way to declare an instance field named count of type int inside a C# class?
easy
A. static int count;
B. int count() {}
C. void count;
D. int count;

Solution

  1. Step 1: Identify correct syntax for instance field declaration

    Instance fields are declared with a type and name, without static keyword or parentheses.
  2. Step 2: Check each option

    static int count; is static, not instance. void count; uses void which is invalid for fields. int count() {} looks like a method, not a field.
  3. Final Answer:

    int count; -> Option D
  4. Quick Check:

    Instance field syntax = type + name [OK]
Hint: Instance fields: type and name, no parentheses or static [OK]
Common Mistakes:
  • Using static keyword for instance fields
  • Adding parentheses like a method
  • Using void as a type for fields
3. What will be the output of this C# code?
class Counter {
  private int count = 0;
  public void Increment() {
    count++;
  }
  public int GetCount() {
    return count;
  }
}

var c = new Counter();
c.Increment();
c.Increment();
Console.WriteLine(c.GetCount());
medium
A. 0
B. 2
C. 1
D. Compilation error

Solution

  1. Step 1: Trace the method calls on the object

    The object c calls Increment() twice, each increasing count by 1.
  2. Step 2: Check the value returned by GetCount()

    After two increments, count is 2, so GetCount() returns 2.
  3. Final Answer:

    2 -> Option B
  4. Quick Check:

    2 increments = count 2 [OK]
Hint: Each Increment adds 1; two calls mean count is 2 [OK]
Common Mistakes:
  • Forgetting that count starts at 0
  • Assuming Increment does not change count
  • Confusing method return types
4. Identify the error in this C# class that tries to track a score:
class Game {
  int score;
  public void AddPoints(int points) {
    score = score + points;
  }
  public int GetScore() {
    return score;
  }
}

var g = new Game();
g.AddPoints(5);
Console.WriteLine(g.GetScore());
medium
A. No error; code runs and prints 5
B. score should be declared static
C. AddPoints method should return int
D. score is not initialized and may have a default value

Solution

  1. Step 1: Check field initialization rules in C#

    Instance fields like score default to 0 if not explicitly initialized.
  2. Step 2: Verify method behavior and output

    AddPoints adds points correctly, and GetScore returns the updated score. The code prints 5 as expected.
  3. Final Answer:

    No error; code runs and prints 5 -> Option A
  4. Quick Check:

    Uninitialized int defaults to 0 in C# [OK]
Hint: Instance int fields default to 0 if not set [OK]
Common Mistakes:
  • Thinking uninitialized int fields cause errors
  • Believing AddPoints must return a value
  • Confusing static and instance fields
5. You want to create a class BankAccount that remembers the balance for each account. Which design correctly uses instance fields to track the balance and safely update it?
class BankAccount {
  private decimal balance;

  public BankAccount(decimal initial) {
    balance = initial;
  }

  public void Deposit(decimal amount) {
    if (amount > 0) {
      balance += amount;
    }
  }

  public bool Withdraw(decimal amount) {
    if (amount > 0 && amount <= balance) {
      balance -= amount;
      return true;
    }
    return false;
  }

  public decimal GetBalance() {
    return balance;
  }
}
hard
A. Incorrect: Deposit and Withdraw should be static methods
B. Incorrect: balance should be static to share across accounts
C. Correct design: instance field stores balance, methods update and read it safely
D. Incorrect: balance should be public to allow direct access

Solution

  1. Step 1: Check if balance is instance field and encapsulated

    Balance is private instance field, unique per object, which is correct for tracking each account.
  2. Step 2: Verify methods safely update and provide access

    Deposit and Withdraw check amounts before changing balance, and GetBalance returns current balance safely.
  3. Final Answer:

    Correct design: instance field stores balance, methods update and read it safely -> Option C
  4. Quick Check:

    Instance field + safe methods = correct state management [OK]
Hint: Use private instance fields with methods to control access [OK]
Common Mistakes:
  • Making balance static, sharing state wrongly
  • Using static methods that can't access instance fields
  • Making balance public, breaking encapsulation