What is a Struct in C#?

๐Ÿ’ก Concept: Struct

A struct in C# is a value type used to encapsulate small groups of related variables such as coordinates, colors, or complex numbers. Structs are stored on the stack and do not support inheritance.

๐Ÿ“˜ Quick Intro

Unlike classes, structs are value types, meaning they hold their data directly. They are ideal for lightweight objects and are copied by value when assigned or passed to methods.

๐Ÿง  Analogy

Think of a struct like a sealed envelope containing data. When you give it to someone, they receive a complete copy. With a class (reference type), you only give them a reference to a shared box โ€” any changes they make affect the original.

๐Ÿ”ง Technical Explanation

  • Structs are value types and are stored on the stack.
  • Structs cannot inherit from another struct or class, but can implement interfaces.
  • They do not require the use of the new keyword for instantiation (but can use it).
  • Default constructors are not allowed; a parameterless one is auto-generated by the compiler.
  • Ideal for representing lightweight, immutable data structures.

๐ŸŽฏ Use Cases

  • Storing small sets of related data (e.g., Point, Rectangle, Color).
  • Improving performance by reducing heap allocation and garbage collection.
  • Creating readonly immutable objects for math or graphics operations.
  • Representing a record of data without needing inheritance.

๐Ÿ’ป Code Example

public struct Point
{
    public int X;
    public int Y;

    public Point(int x, int y)
    {
        X = x;
        Y = y;
    }

    public void Display()
    {
        Console.WriteLine($""Point: ({X}, {Y})"");
    }
}

// Usage
Point p1 = new Point(10, 20);
Point p2 = p1; // Creates a copy
p2.X = 30;

p1.Display(); // (10, 20)
p2.Display(); // (30, 20)

โ“ Interview Q&A

Q1: What is a struct in C#?
A: A struct is a value type that encapsulates related data fields.

Q2: How is struct memory allocated?
A: Structs are allocated on the stack (usually).

Q3: Can structs inherit from other types?
A: No, structs can't inherit from other structs or classes.

Q4: Can a struct implement interfaces?
A: Yes, structs can implement interfaces.

Q5: Can structs have methods?
A: Yes, structs can contain methods, properties, constructors, etc.

Q6: Is struct reference or value type?
A: Struct is a value type.

Q7: Are structs copied by reference or value?
A: Structs are copied by value.

Q8: Can structs have parameterless constructors?
A: No, C# doesn't allow custom parameterless constructors in structs.

Q9: When should you use a struct?
A: When you need lightweight, immutable data containers.

Q10: Can structs be null?
A: No, unless they are nullable using Nullable<T> or T?.

๐Ÿ“ MCQs

Q1. Where is struct stored in memory?

  • Heap
  • Stack
  • Global memory
  • Thread pool

Q2. What is struct in C#?

  • A reference type
  • A pointer
  • A value type
  • A sealed class

Q3. Can structs implement interfaces?

  • No
  • Yes
  • Only IDisposable
  • Only abstract

Q4. What happens when a struct is copied?

  • Reference is copied
  • Nothing
  • A new copy is created
  • It becomes null

Q5. Can structs have constructors?

  • No
  • Yes, only static
  • Yes, with parameters
  • Yes, but private only

Q6. Can you inherit from a struct?

  • Yes
  • No
  • Only sealed classes
  • Only other structs

Q7. Which of these is a value type?

  • Class
  • Struct
  • Array
  • Delegate

Q8. How are structs passed to methods?

  • By reference
  • By pointer
  • By value
  • By default constructor

Q9. Can struct fields be private?

  • No
  • Yes
  • Only static
  • Only readonly

Q10. Which of these is NOT true for structs?

  • They are value types
  • They are copied by value
  • They support inheritance
  • They can implement interfaces

๐Ÿ’ก Bonus Insight

Structs are excellent for performance-sensitive code where you want to avoid heap allocation. Always consider whether value semantics make sense for your use case before choosing structs over classes.

๐Ÿ“„ PDF Download

Need a handy summary for your notes? Download this topic as a PDF!

๐Ÿ” Navigation

Learn More About C# ๐Ÿ“š

1. What is C#? ๐Ÿ‘‰ Explained
2. Main Features of C# ๐Ÿ‘‰ Explained
3. Difference Between C# and Java ๐Ÿ‘‰ Explained
4. Common Language Runtime (CLR) in C# ๐Ÿ‘‰ Explained
5. Common Type System (CTS) in C# ๐Ÿ‘‰ Explained
6. Common Language Specification (CLS) in C# ๐Ÿ‘‰ Explained
7. Value Types vs Reference Types in C# ๐Ÿ‘‰ Explained
8. What is a Namespace in C#? ๐Ÿ‘‰ Explained
9. Purpose of the 'using' Keyword in C# ๐Ÿ‘‰ Explained
10. Different Data Types in C# ๐Ÿ‘‰ Explained
11. Difference Between int and Int32 in C# ๐Ÿ‘‰ Explained
12. Difference Between float, double, and decimal in C# ๐Ÿ‘‰ Explained
13. What is the Default Value of a Boolean in C#? ๐Ÿ‘‰ Explained
14. What is Boxing and Unboxing in C# ๐Ÿ‘‰ Explained
15. What are the Different Types of Operators in C# ๐Ÿ‘‰ Explained
16. Difference Between Equals and == in C# ๐Ÿ‘‰ Explained
17. What is the Null-Coalescing Operator ?? in C# ๐Ÿ‘‰ Explained
18. What is the Ternary Operator in C# ๐Ÿ‘‰ Explained
19. How Does the Switch Statement Work in C# ๐Ÿ‘‰ Explained
20. What is Object-Oriented Programming in C# ๐Ÿ‘‰ Explained
21. What are the Four Pillars of OOP in C# ๐Ÿ‘‰ Explained
22. What is Encapsulation in C# ๐Ÿ‘‰ Explained
23. What is Inheritance in C# ๐Ÿ‘‰ Explained
24. What is Polymorphism in C# ๐Ÿ‘‰ Explained
25. What is Abstraction in C# ๐Ÿ‘‰ Explained
26. What is an Abstract Class in C# ๐Ÿ‘‰ Explained
27. What is an Interface in C# ๐Ÿ‘‰ Explained
28. Can a Class Implement Multiple Interfaces in C#? ๐Ÿ‘‰ Explained
29. Difference Between Abstract Class and Interface in C# ๐Ÿ‘‰ Explained
30. How Do You Create a Class in C#? ๐Ÿ‘‰ Explained
31. What is a Constructor in C# ๐Ÿ‘‰ Explained
32. What Are the Types of Constructors in C# ๐Ÿ‘‰ Explained
33. What is a Static Constructor in C# ๐Ÿ‘‰ Explained
34. Difference Between Static and Non-Static Members in C# ๐Ÿ‘‰ Explained
35. What is the Use of 'this' Keyword in C# ๐Ÿ‘‰ Explained
36. What is a Destructor in C# ๐Ÿ‘‰ Explained
37. What is Object Initializer Syntax in C# ๐Ÿ‘‰ Explained
38. What is the Difference Between Field and Property in C# ๐Ÿ‘‰ Explained
Share:

Tags:


Feedback Modal Popup