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

Default keyword for generic types in C Sharp (C#) - Mini Project: Build & Apply

Choose your learning style10 modes available
Using the Default Keyword with Generic Types in C#
📖 Scenario: Imagine you are creating a simple program that works with different types of data. Sometimes, you need to set a variable to its default value without knowing its exact type in advance.
🎯 Goal: You will build a small C# program that uses the default keyword with generic types to assign default values to variables of different types.
📋 What You'll Learn
Create a generic method that returns the default value of its type parameter.
Call this method with different types like int, string, and a custom class.
Print the default values to the console.
💡 Why This Matters
🌍 Real World
Using the <code>default</code> keyword with generics helps write flexible code that works with many types without knowing them in advance.
💼 Career
Understanding generics and default values is important for writing reusable and safe code in C# software development.
Progress0 / 4 steps
1
Create a generic method to return default value
Write a generic method called GetDefaultValue with a type parameter T that returns default(T).
C Sharp (C#)
Hint

Use default(T) inside the method to get the default value of the generic type.

2
Call the generic method with different types
Inside the Main method, create three variables: intDefault assigned to GetDefaultValue<int>(), stringDefault assigned to GetDefaultValue<string>(), and customDefault assigned to GetDefaultValue<MyClass>(). Also, define an empty class called MyClass outside Program.
C Sharp (C#)
Hint

Call GetDefaultValue with the type inside angle brackets <> and assign the result to variables.

3
Print the default values to the console
Add Console.WriteLine statements inside Main to print intDefault, stringDefault, and customDefault. Use ?? "null" to show "null" for reference types.
C Sharp (C#)
Hint

Use ?? "null" to print "null" if the value is null.

4
Run the program and see the output
Run the program to see the printed default values for int, string, and MyClass.
C Sharp (C#)
Hint

The default value for int is 0, and for reference types like string and MyClass it is null.

Practice

(1/5)
1. What does the default keyword return when used with a generic type parameter T in C#?
easy
A. A new instance of type T created with the default constructor
B. The default value of type T, like 0 for int or null for reference types
C. An exception is thrown if T is a reference type
D. The string representation of type T

Solution

  1. Step 1: Understand the purpose of default keyword with generic T

    The default keyword returns the default value for any type. For value types like int, it returns 0. For reference types, it returns null. When used with a generic type parameter T, default(T) returns the default value of that type without creating an instance.
  2. Final Answer:

    The default value of type T, like 0 for int or null for reference types -> Option B
  3. Quick Check:

    default(T) = default value [OK]
Hint: Remember: default returns zero/null, not a new object [OK]
Common Mistakes:
  • Thinking default creates a new instance
  • Assuming default throws exceptions
  • Confusing default with ToString()
2. Which of the following is the correct syntax to get the default value of a generic type T inside a method?
easy
A. default(T)
B. default<T>
C. default T
D. default::T

Solution

  1. Step 1: Recall syntax for default and check options

    The correct syntax to get the default value of a type is default(TypeName). For generic types, it becomes default(T). default<T> uses invalid angle brackets. default T misses parentheses. default::T uses invalid scope operator. Only default(T) is correct.
  2. Final Answer:

    default(T) -> Option A
  3. Quick Check:

    Use parentheses with default: default(T) [OK]
Hint: Use parentheses with default keyword for types [OK]
Common Mistakes:
  • Using angle brackets instead of parentheses
  • Omitting parentheses
  • Using invalid operators like ::
3. What is the output of this C# code?
static T GetDefault<T>() {
    return default(T);
}

Console.WriteLine(GetDefault<int>());
Console.WriteLine(GetDefault<string>() == null);
medium
A. 0 False
B. null True
C. 0 True
D. null False

Solution

  1. Step 1: Trace the code execution

    For GetDefault<int>(), default(int) returns 0, so first line prints 0. For GetDefault<string>(), default(string) returns null, so null == null is true, second line prints True.
  2. Final Answer:

    0 True -> Option C
  3. Quick Check:

    default int = 0, default string = null [OK]
Hint: Value types default to zero; reference types default to null [OK]
Common Mistakes:
  • Assuming default string returns empty string
  • Confusing default int with null
  • Forgetting default returns null for references
4. Identify the error in this generic method using default keyword:
public T GetValue<T>() {
    T value = default;
    return value;
}
medium
A. Syntax error: default must be used as default(T) in this context
B. Missing return type in method signature
C. Runtime error because default cannot be assigned to generic types
D. No error; code compiles and returns default value

Solution

  1. Step 1: Validate default literal usage in generic context

    Since C# 7.1, default can be used as a literal without specifying type when the compiler can infer it from context like T value = default;. The method correctly initializes and returns the default value of T. No error.
  2. Final Answer:

    No error; code compiles and returns default value -> Option D
  3. Quick Check:

    default literal works with inferred generic type [OK]
Hint: Since C# 7.1, default literal can omit type in generics [OK]
Common Mistakes:
  • Thinking default must always have parentheses
  • Assuming runtime error for default assignment
  • Missing that default literal is valid syntax
5. You want to write a generic method that returns the default value of T but only if T is a value type. Otherwise, it should return null. Which code snippet correctly implements this?
hard
A. public object GetDefaultIfValueType<T>() { return typeof(T).IsValueType ? default(T) : null; }
B. public T GetDefaultIfValueType<T>() { return default(T) ?? null; }
C. public T? GetDefaultIfValueType<T>() where T : struct { return default(T); }
D. public T GetDefaultIfValueType<T>() { if (default(T) == null) return null; else return default(T); }

Solution

  1. Step 1: Evaluate options against requirement for value/reference types

    Needs runtime check as constraints can't handle both; return object. C: typeof(T).IsValueType ? default(T) : null works. A restricts to struct; B ?? null invalid for values; D default(T) == null compile error unconstrained.
  2. Final Answer:

    public object GetDefaultIfValueType<T>() { return typeof(T).IsValueType ? default(T) : null; } -> Option A
  3. Quick Check:

    Use typeof(T).IsValueType to decide default or null [OK]
Hint: Use typeof(T).IsValueType to check type at runtime [OK]
Common Mistakes:
  • Restricting generic type with where struct and missing reference types
  • Using null-coalescing on value types
  • Comparing default(T) to null directly
Recommended

Ready to prove it?

Pass the test and this pattern moves unknown strong while earning +1 Grip toward your certificate.

10 questions~5 mineasy hard