This blog provides an in-depth explanation of object and dynamic types in C#.

Object Type

1. Overview

  • object is the base class for all data types in C#.
  • It can store any type of value, including value types and reference types.
  • It requires explicit casting when retrieving a value.

2. Example Usage


using System;

class Program
{
    static void Main()
    {
        object obj = 10; // Boxing
        int num = (int)obj; // Unboxing
        Console.WriteLine(num);
    }
}
    

3. Key Points

  • object stores any data type.
  • Boxing and unboxing operations may lead to performance overhead.
  • Explicit casting is required when retrieving values.

Dynamic Type

1. Overview

  • dynamic allows runtime type flexibility.
  • It bypasses compile-time type checking.
  • The compiler assumes that all operations are valid until runtime.

2. Example Usage


using System;

class Program
{
    static void Main()
    {
        dynamic value = 10;
        Console.WriteLine(value);
        value = "Hello World";
        Console.WriteLine(value);
    }
}
    

3. Key Points

  • dynamic can change its type at runtime.
  • No explicit casting is needed.
  • Compile-time checking is skipped, leading to potential runtime errors.

Differences Between object and dynamic

Feature object dynamic
Type Checking Compile-time Runtime
Casting Required Yes No
Performance Slower due to boxing/unboxing Faster as it avoids compile-time checks
IntelliSense Support Yes No

Questions and Answers

Q1: What is the key difference between object and dynamic in C#?

A: object requires explicit casting, and type checking is done at compile time, while dynamic skips compile-time checking and determines types at runtime.

Q2: What are the disadvantages of using dynamic?

A:

  • No compile-time type safety, leading to runtime errors.
  • No IntelliSense support in some cases.
  • Performance overhead due to runtime type resolution.

Q3: When should we use dynamic over object?

A: Use dynamic when working with reflection, COM objects, or dynamic languages like Python.

Q4: Does dynamic affect performance?

A: Yes, dynamic operations take longer due to runtime type resolution, whereas object may perform better when using proper casting.

Q5: Can dynamic store primitive types?

A: Yes, dynamic can store any type, including primitive types, and allows changing them at runtime.

Conclusion

  • Use object when dealing with generic types and need type safety.
  • Use dynamic when working with unknown types at runtime.
  • Be cautious about performance and error handling while using dynamic.

This guide provides an essential understanding of object and dynamic types, helping developers choose the right type based on their use case.

Connect with Me

During development and everyday use, Substring is often the go-to choice for string manipulation. However, there are cases where Substring can negatively impact performance and result in unnecessary string memory allocation. 
In this article, we will explore how to enhance the performance of C# applications by making informed decisions when working with substrings. 
We'll compare the traditional Substring method with the newer AsSpan method and discuss when to use each for maximum efficiency

C# AsSpan VS Substring

Substring()

The Substring method is a commonly used tool for extracting substrings from a string in C#. While it's convenient and easy to use.
I have created a sample method that takes a full date string, splits the string, and returns the day, month, and year separated by commas.

🐌 Memory Allocation

When you call Substring, it creates a new string object and copies the characters from the original string to the new substring.

Improving C# Performance by Using AsSpan and Avoiding Substring

This can result in additional memory allocations, which can be problematic, particularly when handling large strings or frequent substring operations.

AsSpan

In contrast to Substring, the AsSpan method returns a ReadOnlySpan from the original string. A ReadOnlySpan is a lightweight, stack-allocated view over the data, and it doesn't create a new string object or copy the characters.

Same date full string convert into AsSpan method

🚀 Improved Performance: 

By using AsSpan, you can significantly improve the performance of your code. It eliminates the overhead associated with creating new string objects and copying characters, making it an excellent choice for scenarios where performance is critical.

Reduced Memory Overhead: The lack of memory copying in AsSpan means that your application consumes less memory, reducing the load on the garbage collector and leading to a more efficient use of resources. You can refer to the statistics below for the results of the two methods.

Improving C# Performance by Using AsSpan and Avoiding Substring

When I can use AsSpan

The AsSpan method is particularly valuable in situations where you need to work with portions of a string without the need for actual string manipulation. Here are some common scenarios where using AsSpan is recommended

💡 API Compatibility: 

Many APIs that accept strings now have overloads that accept a ReadOnlySpan argument. When such overloads are available, you can improve performance by calling AsSpan instead of Substring.

Performance-Critical Operations:

If your application performs extensive string manipulation operations, consider using AsSpan for better performance.

When I can use Substring

It's essential to note that there are still situations where using  Substring may be appropriate

✅ Creating a Copy

If you need to create a distinct copy of the substring (rather than a view), Substring remains a suitable choice.

Conclusion

In C# programming, optimizing string manipulation is crucial for enhancing the performance of your applications. While `Substring` is a well-known method for extracting substrings, it can introduce unnecessary memory overhead and reduce performance in some scenarios. On the other hand, `AsSpan` offers a lightweight, memory-efficient alternative that can significantly boost your application's speed. I hope this article more help you to 


Featured Post

C# Object and Dynamic Types

This blog provides an in-depth explanation of object and dynamic types in C#. Object Type 1. Overview object ...

MSDEVBUILD - English Channel

MSDEVBUILD - Tamil Channel

Popular Posts