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

Static members vs instance members in C Sharp (C#) - Quick Revision & Key Differences

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
Recall & Review
beginner
What is a static member in C#?
A static member belongs to the class itself, not to any specific object. It can be accessed without creating an instance of the class.
Click to reveal answer
beginner
What is an instance member in C#?
An instance member belongs to a specific object created from a class. You need to create an object to access instance members.
Click to reveal answer
intermediate
Can static members access instance members directly? Why or why not?
No, static members cannot access instance members directly because instance members belong to objects, and static members belong to the class itself without any object context.
Click to reveal answer
beginner
How do you call a static method and an instance method in C#?
You call a static method using the class name (e.g., ClassName.Method()), and you call an instance method using an object of the class (e.g., objectName.Method()).
Click to reveal answer
beginner
Example: What will this code print?
<pre>class Car {
  public static int wheels = 4;
  public string color;
  public Car(string c) { color = c; }
}

Console.WriteLine(Car.wheels);
Car myCar = new Car("red");
Console.WriteLine(myCar.color);</pre>
It will print:
4
red
Because 'wheels' is static and accessed by class name, and 'color' is instance and accessed by object.
Click to reveal answer
Which of these belongs to the class itself, not to any object?
AParameter
BStatic member
CLocal variable
DInstance member
How do you access an instance member in C#?
AUsing the class name
BDirectly without any reference
CUsing an object of the class
DUsing the static keyword
Can a static method access instance variables directly?
AYes, always
BOnly inside constructors
COnly if the instance variables are public
DNo, because instance variables belong to objects
What keyword is used to declare a static member in C#?
Astatic
Binstance
Cconst
Dreadonly
If you want a property shared by all objects of a class, which should you use?
AStatic member
BInstance member
CLocal variable
DParameter
Explain the difference between static members and instance members in your own words.
Think about whether you need to create an object to use the member.
You got /4 concepts.
    Describe a real-life example where you would use a static member versus an instance member.
    Imagine a car factory: number of wheels is same for all cars, color is different per car.
    You got /4 concepts.

      Practice

      (1/5)
      1. Which statement correctly describes a static member in C#?
      easy
      A. It belongs to the class and is shared by all instances.
      B. It belongs to each object and stores unique data.
      C. It can only be accessed through an object instance.
      D. It is created every time a new object is instantiated.

      Solution

      1. Step 1: Understand static member concept

        Static members belong to the class itself, not to any individual object.
      2. Step 2: Compare with instance members

        Instance members belong to objects and hold unique data per object, unlike static members.
      3. Final Answer:

        It belongs to the class and is shared by all instances. -> Option A
      4. Quick Check:

        Static member = shared by class [OK]
      Hint: Static = shared by class, instance = unique per object [OK]
      Common Mistakes:
      • Confusing static with instance members
      • Thinking static members are unique per object
      • Believing static members require object to access
      2. Which of the following is the correct way to declare a static field in a C# class?
      easy
      A. public static int count;
      B. public int static count;
      C. public int count;
      D. int static public count;

      Solution

      1. Step 1: Recall C# static field syntax

        The correct order is access modifier, then 'static', then type and name.
      2. Step 2: Check each option

        public static int count; matches the correct syntax: 'public static int count;'. Others have wrong order or missing keywords.
      3. Final Answer:

        public static int count; -> Option A
      4. Quick Check:

        Access modifier + static + type + name [OK]
      Hint: Use 'public static' before type for static fields [OK]
      Common Mistakes:
      • Placing 'static' after the type
      • Omitting 'static' keyword
      • Incorrect order of keywords
      3. What will be the output of the following C# code?
      class Counter {
          public static int count = 0;
          public Counter() {
              count++;
          }
      }
      
      class Program {
          static void Main() {
              Counter c1 = new Counter();
              Counter c2 = new Counter();
              Console.WriteLine(Counter.count);
          }
      }
      medium
      A. 0
      B. 2
      C. 1
      D. Compilation error

      Solution

      1. Step 1: Understand static field behavior

        The static field 'count' is shared by all instances and starts at 0.
      2. Step 2: Trace constructor calls

        Each new Counter() increments 'count' by 1. Two objects created, so count becomes 2.
      3. Final Answer:

        2 -> Option B
      4. Quick Check:

        Static count increments twice = 2 [OK]
      Hint: Static fields keep shared state across all objects [OK]
      Common Mistakes:
      • Thinking count resets per object
      • Confusing instance and static fields
      • Expecting compilation error due to static access
      4. Identify the error in this C# code snippet:
      class Example {
          public static int value = 10;
          public int GetValue() {
              return value;
          }
      }
      medium
      A. Cannot access static field 'value' inside instance method.
      B. Method GetValue must be static to access static field 'value'.
      C. Static field 'value' must be private.
      D. No error; code compiles and runs correctly.

      Solution

      1. Step 1: Check static field access rules

        Instance methods can access static fields directly without error.
      2. Step 2: Verify code correctness

        Method GetValue returns static field 'value' correctly; no syntax or access errors.
      3. Final Answer:

        No error; code compiles and runs correctly. -> Option D
      4. Quick Check:

        Instance method can access static field [OK]
      Hint: Instance methods can access static fields directly [OK]
      Common Mistakes:
      • Thinking instance methods cannot access static fields
      • Believing GetValue must be static
      • Assuming static fields must be private
      5. You want to count how many objects of a class are created, but also keep a unique ID for each object starting from 1. Which approach correctly uses static and instance members?
      hard
      A. Use only instance fields for both counter and ID.
      B. Use an instance counter incremented in constructor; assign its value to a static ID field.
      C. Use a static counter incremented in constructor; assign its value to an instance ID field.
      D. Use static fields for both counter and ID without instance fields.

      Solution

      1. Step 1: Understand counting objects with static field

        A static counter shared by all objects can track total created objects.
      2. Step 2: Assign unique ID per object using instance field

        Each object gets its own instance ID assigned from the static counter value.
      3. Final Answer:

        Use a static counter incremented in constructor; assign its value to an instance ID field. -> Option C
      4. Quick Check:

        Static counter + instance ID = unique IDs [OK]
      Hint: Static counts total; instance stores unique ID per object [OK]
      Common Mistakes:
      • Using instance counter for total count
      • Assigning static ID per object (not unique)
      • Not incrementing counter in constructor