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

Default keyword for generic types in C Sharp (C#) - Practice Problems & Coding Challenges

Choose your learning style10 modes available
Challenge - 5 Problems
🎖️
Generic Default Master
Get all challenges correct to earn this badge!
Test your skills under time pressure!
❓ Predict Output
intermediate
2:00remaining
Output of default keyword with generic type parameter
What is the output of this C# code snippet?
C Sharp (C#)
using System;

class Program {
    static void ShowDefault<T>() {
        T value = default;
        Console.WriteLine(value == null ? "null" : value.ToString());
    }

    static void Main() {
        ShowDefault<int>();
        ShowDefault<string>();
    }
}
ACompilation error
B
null
null
C
0
""
D
0
null
Attempts:
2 left
💡 Hint
Consider what default returns for value types and reference types.
❓ Predict Output
intermediate
2:00remaining
Default keyword with nullable generic type
What will be the output of this C# program?
C Sharp (C#)
using System;

class Program {
    static void ShowDefault<T>() {
        T value = default;
        Console.WriteLine(value == null ? "null" : value.ToString());
    }

    static void Main() {
        ShowDefault<int?>();
        ShowDefault<double>();
    }
}
A
null
0
B
0
0
C
null
null
DCompilation error
Attempts:
2 left
💡 Hint
Nullable types are structs that can hold null.
❓ Predict Output
advanced
2:00remaining
Default keyword with struct generic type
What is the output of this C# code?
C Sharp (C#)
using System;

struct Point {
    public int X, Y;
    public override string ToString() => $"({X},{Y})";
}

class Program {
    static void ShowDefault<T>() where T : struct {
        T value = default;
        Console.WriteLine(value.ToString());
    }

    static void Main() {
        ShowDefault<Point>();
    }
}
Anull
B(,)
C(0,0)
DCompilation error
Attempts:
2 left
💡 Hint
Default of a struct initializes all fields to zero.
❓ Predict Output
advanced
2:00remaining
Default keyword with generic class and null check
What will this program print?
C Sharp (C#)
using System;

class Container<T> {
    public T Value = default;
    public bool IsNull() => Value == null;
}

class Program {
    static void Main() {
        var c1 = new Container<string>();
        var c2 = new Container<int>();
        Console.WriteLine(c1.IsNull());
        Console.WriteLine(c2.IsNull());
    }
}
A
True
False
B
False
False
C
True
True
DCompilation error
Attempts:
2 left
💡 Hint
Value types cannot be null, reference types can.
🧠 Conceptual
expert
2:00remaining
Behavior of default keyword with unconstrained generic types
Consider a generic method void Test() with no constraints on T. Which statement about default(T) is true?
AIt returns null for all types, including value types.
BIt returns the default value for value types and null for reference types.
CIt causes a compile-time error if <code>T</code> is unconstrained.
DIt returns zero for numeric types and null for reference types.
Attempts:
2 left
💡 Hint
Think about how default behaves for value and reference types.

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