C# reflection, interfaces, abstract class, generics, ref vs out, C# versions 4,5,6 and features.

ConcurrentQueue in C# - Introduction and Examples

C# ConcurrentQueue is a thread-safe collection class. It is introduced in .NET 4.0 with other concurrent collection classes. It provides a thread-safe First-In-First-Out (FIFO) data structure. You can read more about Queue here. ConcurrentQueue exists in System.Collections.Concurrent namespace ConcurrentQueue is a wrapper around generic Queue class. Queue...

Continue Reading

ConcurrentStack in C# - Introduction and Examples

ConcurrentStack is a thread-safe generic collection class introduced in .NET 4.0 framework. It provides a Last-In-First-Out (LIFO) data structure. You can read more about Stack here. ConcurrentStack is like wrapper around Stack class. Stack class is not thread-safe. ConcurrentStack provides thread-safety. It internally uses locking to synchronize different threads. Cr...

Continue Reading

ConcurrentBag in C# - Introduction and Examples

ConcurrentBag is one of the thread-safe collection classes introduced in .NET 4.0. ConcurrentBag allows you to store objects in unordered way. Contrary to ConcurrentDictionary class, it allows you to store duplicate objects. ConcurrentBag allows multiple threads to store the objects. It is optimized for scenarios where same thread act as producer and consumer. That means sam...

Continue Reading

BlockingCollection in C# - Introduction and Examples

BlockingCollection is a collection class which ensures thread-safety. Multiple threads can add and remove objects in BlockingCollection concurrently. It implements the producer-consumer pattern. In this pattern, there are two threads one is called producer and other is called consumer. Both threads share a common collection class to exchange data between them. BlockingC...

Continue Reading

C# Action

A delegate in C# represents a reference type that encapsulates a method. When we declare a delegate type we specify some parameters and a return type. We can only store those methods in delegates which has same parameters and same return type. Microsoft introduced some pre-built delegates so that we don't have to declare delegates every time. Action is one of the pre-b...

Continue Reading

C# Predicate

Predicate is a pre-built delegate in the .NET framework class library. Delegates are used to store method which has same parameters and return types as specify in the delegate type. Predicate is a generic delegate. It takes one parameter and returns a boolean value. Predicate delegate is used for check whether a parameter meets specify condition or not. ...

Continue Reading

C# Func

In Microsoft Framework class library, there are some built-in delegates. Action, Predicate and Func are some of them. I have explained Action and Predicate in my previous posts. Action and Predicate delegates has restrictions. Action delegate can take only parameters and does not return anything. Predicate delegate can take parameters but returns only boolean value. To ret...

Continue Reading

C# Versions and Features

C# versions C# 1 comes in 2002 with .NET framework 1.0 and Visual Studio 2002 C# 2 comes in 2005 with .NET framework 2.0 and Visual Studio 2005 C# 3 comes in 2008 with .NET framework 2.0 and Visual Studio 2008 C# 4 comes in 2010 with .NET framework 4.0 and Visual Studio 2010 C# 5 comes in 2012 with .NET framework 4.5 and Visual Studio...

Continue Reading

C# using statement - Why and How?

This article is an introduction to the C# using statement and explain why and how to use it. I'll also describe features of using statement and examples of nested using. In C#, every object is using some resources managed or unmanaged internally. Client is responsible for life cycle of the object. Life cycle of the object means creation or destroying the object...

Continue Reading

C# Hashtable

C# Hashtable class is a collection class where we can store data in the key/value pair. Hashtable is not type-safe. Hashtable is not generic and both key and value are based on object type. Hashtable is used to store unique keys data. If we try to assign value to already used key, it just overrides the previous stored data. It is based on the Hashing algorithm&n...

Continue Reading

Join our newsletter and get an occasional email with a technology and DotNetPattern.com news update.