C#基础知识 结构与类的区别

网上看到struct与class之间的区别,都写的很多,当然说的是对的,也很详细。不过我个人不喜欢照本宣科,还是要有自己的理解和认识,方便记忆。

(前提:对于值类型与引用类型有一定的认识)

结构最重要的两点:

  •  struct 值类型
  •  struct 不能被继承(所以不能被protected)

以前总会纠结一个问题,什么时候用Class,什么时候用Struct。(不知道大家有没有同样的困惑)

值类型:就代表它存储的位置是stack(堆)上,存储在stack上就代表,它传递的不是值所在内存中的指针,代表它传递的是副本,这些最终说明了一个问题,就是在changeValue这个方法里修改它的值之后,在main方法中并没有任何影响。

        static void Main(string[] args)
        {
            PersonClass personClass = new PersonClass();
            personClass.Name = "Class";
            PersonStruct personStruct = new PersonStruct();
            personStruct.Name = "Struct";
            changeValue(personClass, personStruct);
            Console.WriteLine(personClass.Name);
            Console.WriteLine(personStruct.Name);
        }
        public static object changeValue(PersonClass personClass, PersonStruct personStruct)
        {
            personClass.Name = "Class1";
            personStruct.Name = "Struct1";
            return null;
        }

结果:

不能被继承:这个很好理解,它不能继随别人,别人也不能继承它。当然它是可以实现接口的。

 结构与类之间相同处很多很多。我们无需记住相同点,只需要记住不同点(类型与继承),自然就知道在什么样的场景可以使用结构。

Tip:msdn给出的建议,以下几种情况适合使用struct

  • 小于16个字节
  • 偏向于值,是简单数据,而不是偏向于"面向对象"
  • 希望值不可变

如果大家有什么好的想法,可以留言,我肯定会学习并实践好再拿出来分享。

非常感谢。

如果对您有帮助,请点赞!

非常感谢您的耐心观看,您的关注是我最大的动力! 不积跬步无以至千里,不积小流无以成江海!
原文地址:https://www.cnblogs.com/sheldon-blog/p/8086811.html