What is the difference between struct and class in C# ?

Published on September 15, 2012 by abundantcode

Filed under C#

Last modified September 15, 2012

Print this page

rate 1 star rate 2 star rate 3 star rate 4 star rate 5 star
Your rating: none, Average: 0 (0 votes)

This article have been viewed 3183 times

Below are some differences between struct and class in C#

  • classes are reference types where as struct are value types.
  • Null value cannot be assigned to the Struct because it is a non-nullable value type . Whereas the object of a class can be assigned a null value.
  • Classes support inheritance but the struct doesn’t.
  • struct cannot have destructor but a class can have.
  • struct is stored on stack where as objects instantiated for a class are stored in heap.
  • struct cannot have field initializers where as class can have.
  • You should use the new keyword to initiate the class but for struct it is an option.
  • The access modifiers of a struct cannot be protected or protected internal.
Below is a sample sourcecode demonstrating the struct and class in c#
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace ConsoleApplication1
{
    public class Employee
    {
        public string Name { get; set; }
    }
    struct Student
    {
        // Field initializers are not allowed in strcut
        //int i = 1;
        public string Name { get; set; }
    }
    class Program
    {
        static void Main(string[] args)
        {
            Employee emp = new Employee();
            emp.Name = "Abundant Code";
            Student stu = new Student();
            stu.Name = "Abundant Code";

            // Cannot assign null value  to stu
            //stu = null;
            emp = null;

        }
    }

}
If you enjoyed this post, please consider leaving a comment or subscribing to the RSS feed to have future articles delivered to your feed reader.

Leave a Comment


x

You might be Interested in these Posts

C# and Lambda - Finding all the elements of an integer array less than 35

Here's a sample code snippet demonstrating how to find all the elements of an integer array that is ...

C# and LINQ - Finding all the elements of an integer array less than 35

Here's a sample code snippet demonstrating how to find all the elements of an integer array that is ...

How to get the CommandLine of the Current Application in C# ?

You might need to get the information that contains the commandline which is used to execute the cur...