c#编程最佳实践:使用类还是结构体?

c#编程最佳实践:使用类还是结构体?

选择何时使用类,何时使用结构体

接受这样一个事实,即基本理解了c#中的结构体和类,或者至少理解了最喜欢的编程语言中的结构体和类(如果它们存在的话)。好吧,如果你在想“很久以前我学过结构体,但在日常编码生活中从未使用过它”,那么你就是那95%从未测量过类和结构体性能的开发人员中的一员。别担心;在写这篇文章之前,我也没有。

那么类呢?是的,我们时不时地在日常项目开发中实现一个类。

现在我的问题是“哪个更快,类还是结构体”?我猜你会想“从未测试过”。好的,我们来测试一下。看看下面的代码。

namespace BlogProject{    struct MyStructure    {        public string Name;        public string Surname;    }    class MyClass    {        public string Name;        public string Surname;    }    class Program    {        static void Main(string[] args)        {
            MyStructure[] objStruct = new MyStructure[1000];            MyClass[] objClass = new MyClass[1000];

            Stopwatch sw = new Stopwatch();            sw.Start();            for (int i = 0; i < 1000; i++)            {                objStruct[i] = newMyStructure();                objStruct[i].Name = "Sourav";                objStruct[i].Surname = "Kayal";            }            sw.Stop();            Console.WriteLine("For Structure:- " + sw.ElapsedTicks);            sw.Restart();
            for (int i = 0; i < 1000; i++)            {                objClass[i] = newMyClass();                objClass[i].Name = "Sourav";                objClass[i].Surname = "Kayal";            }            sw.Stop();            Console.WriteLine("For Class:- " + sw.ElapsedTicks);
            Console.ReadLine();        }    }}

输出结果如下:

www.zeeklog.com  - c#编程最佳实践:使用类还是结构体?

现在很明显,结构体要比类快得多。同样,我在发布模式下测试了这段代码,并获得了至少20个输出,以使程序达到稳定的位置。

现在最大的问题是“为什么结构体比类快?”

正如我们所知,结构体变量是值类型,值(或结构体变量)存储在一个位置。

类对象是引用类型。如果是对象类型,则创建引用,并将值存储在内存的其他位置。基本上,值存储在一个可管理的堆中,指针创建在堆栈中。以这种方式在内存中实现一个对象,通常要比结构体变量花费更多的时间。