A struct is a value type that can hold data and related functionality. It is used to create small data structures that have value semantics.
Click to reveal answer
intermediate
How do structs differ from classes in C#?
Structs are value types stored on the stack, while classes are reference types stored on the heap. Structs do not support inheritance but can implement interfaces.
Click to reveal answer
intermediate
Can a struct have a parameterless constructor in C#?
No, structs cannot have explicit parameterless constructors. The compiler provides a default one that initializes all fields to their default values.
Click to reveal answer
beginner
What happens when you assign one struct variable to another?
The entire data is copied. Each struct variable has its own copy of the data, so changes to one do not affect the other.
Click to reveal answer
intermediate
Why might you choose a struct over a class?
Use a struct when you need a small, lightweight object with value semantics, such as points, colors, or complex numbers, to avoid heap allocation and improve performance.
Click to reveal answer
Which of the following is true about structs in C#?
AStructs are reference types.
BStructs support inheritance from other structs.
CStructs can have explicit parameterless constructors.
DStructs are value types and stored on the stack.
✗ Incorrect
Structs are value types stored on the stack. They do not support inheritance and cannot have explicit parameterless constructors.
What happens when you pass a struct to a method?
AA copy of the struct is passed.
BA reference to the struct is passed.
CThe struct is converted to a class.
DThe struct is passed as null.
✗ Incorrect
Passing a struct to a method copies the entire struct, so the method works with its own copy.
Which keyword is used to declare a struct in C#?
Aclass
Bstruct
Crecord
Dinterface
✗ Incorrect
The keyword 'struct' is used to declare a struct in C#.
Can a struct implement interfaces in C#?
AOnly if the interface has no methods.
BNo, structs cannot implement interfaces.
CYes, structs can implement interfaces.
DOnly if the struct is declared as partial.
✗ Incorrect
Structs can implement interfaces to provide specific behaviors.
Which of these is a reason to use a struct instead of a class?
AYou want to avoid heap allocation for small data.
BYou want reference semantics.
CYou need inheritance.
DYou want to use polymorphism.
✗ Incorrect
Structs avoid heap allocation and are good for small data with value semantics.
Explain how structs behave differently from classes in C# regarding memory and copying.
Think about where data is stored and what happens when you assign one variable to another.
You got /4 concepts.
Describe when and why you would choose to use a struct instead of a class in your C# program.
Consider the size and behavior of the data you want to represent.
You got /4 concepts.
Practice
(1/5)
1. Which of the following statements about struct in C# is true?
easy
A. Structs support inheritance from other structs.
B. Structs are value types and are copied when assigned to a new variable.
C. Structs can have a parameterless constructor defined by the user.
D. Structs are reference types and stored on the heap.
Solution
Step 1: Understand struct type behavior
Structs in C# are value types, meaning when you assign them to another variable, a copy is made.
Step 2: Check inheritance and constructors rules
Structs cannot inherit from other structs or classes, and they cannot have user-defined parameterless constructors. They are stored on the stack, not the heap.
Final Answer:
Structs are value types and are copied when assigned to a new variable. -> Option B
Quick Check:
Struct = Value type copy [OK]
Hint: Remember: structs copy values, no inheritance, no default constructor [OK]
Common Mistakes:
Thinking structs are reference types
Assuming structs support inheritance
Trying to define parameterless constructors in structs
2. Which of the following is the correct way to declare a struct named Point with two integer fields x and y?
easy
A. struct Point { public int x; public int y; }
B. class Point { int x; int y; }
C. struct Point { int x; int y; }
D. struct Point { int x; int y; void Point() {} }
Solution
Step 1: Check struct field accessibility
Fields inside a struct should be declared with an access modifier like public to be accessible outside.
Step 2: Validate struct syntax
struct Point { int x; int y; } misses access modifiers, so fields are private by default and not accessible. class Point { int x; int y; } uses class, not struct. struct Point { int x; int y; void Point() {} } tries to define a constructor with void return type, which is invalid.
Final Answer:
struct Point { public int x; public int y; } -> Option A
Quick Check:
Struct fields need public modifier [OK]
Hint: Use public fields in structs for external access [OK]
Common Mistakes:
Omitting access modifiers on struct fields
Confusing struct with class keyword
Defining constructors with void return type
3. What is the output of the following C# code?
struct Point { public int X; public int Y; } Point p1 = new Point { X = 5, Y = 10 }; Point p2 = p1; p2.X = 20; Console.WriteLine(p1.X);
medium
A. 20
B. 10
C. 5
D. Compilation error
Solution
Step 1: Understand struct assignment behavior
Assigning p1 to p2 copies the values because structs are value types.
Step 2: Analyze modification effect
Changing p2.X to 20 does not affect p1.X, which remains 5.
Final Answer:
5 -> Option C
Quick Check:
Struct copy means original unchanged [OK]
Hint: Struct assignment copies values, original stays same [OK]
Common Mistakes:
Assuming structs behave like reference types
Expecting p1.X to change after modifying p2.X
Confusing output with Y field value
4. Identify the error in the following struct declaration:
struct Rectangle { public int Width; public int Height; public Rectangle() { Width = 0; Height = 0; } }
medium
A. Structs must inherit from System.ValueType explicitly.
B. Structs cannot have any constructors.
C. Fields must be private in structs.
D. Parameterless constructors are not allowed in structs.
Solution
Step 1: Recall struct constructor rules
Structs cannot have user-defined parameterless constructors; the compiler provides a default one.
Step 2: Check other options
Structs can have constructors with parameters, fields can be public, and inheritance from System.ValueType is implicit.
Final Answer:
Parameterless constructors are not allowed in structs. -> Option D
Quick Check:
No user parameterless constructor in struct [OK]
Hint: Structs get default parameterless constructor automatically [OK]
Common Mistakes:
Trying to define parameterless constructor in struct
Thinking structs must inherit explicitly
Believing fields must be private
5. You want to create a struct Color that stores red, green, and blue values as bytes. You also want to ensure that when you assign one Color variable to another, changes to the second do not affect the first. Which approach is correct?
hard
A. Declare Color as a struct with public byte fields and assign normally.
B. Declare Color as a class with public byte fields and assign normally.
C. Declare Color as a struct but use pointers to share data.
D. Declare Color as a class and override the assignment operator.
Solution
Step 1: Understand value vs reference types
Structs are value types, so assigning one struct variable to another copies the data, preventing shared changes.
Step 2: Evaluate options for data isolation
Using a class would create reference types, so changes to one variable affect the other. Using pointers or overriding assignment is unnecessary and complex.
Final Answer:
Declare Color as a struct with public byte fields and assign normally. -> Option A
Quick Check:
Struct assignment copies data, no shared changes [OK]
Hint: Use struct for independent copies of small data [OK]
Common Mistakes:
Using class instead of struct for value copy
Trying to share data with pointers unnecessarily
Overriding assignment operator in class (not allowed)
Recommended
Ready to prove it?
Pass the test and this pattern moves unknownstrongwhile earning +1 Grip toward your certificate.