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

时间:2023-02-13 15:41:04

网上看到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;
}

结果:

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

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

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

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

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

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

非常感谢。

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