设为首页 加入收藏

TOP

C#基础复习(1) 之 Struct与Class的区别(二)
2019-09-17 18:24:46 】 浏览:33
Tags:基础 复习 Struct Class 区别
配。对于栈内存,百度百科的解释如下:

栈的优势是,存取速度比堆要快,仅次于寄存器,栈数据可以共享。但缺点是,存在栈中的数据大小与生存期必须是确定的,缺乏灵活性。栈中主要存放一些基本类型的变量(,int, short, long, byte, float, double, boolean, char)和对象句柄。栈有一个很重要的特殊性,就是存在栈中的数据可以共享

值类型与Null的关系

首先值类型永远不能赋值为null,因为值类型的值就是它本身。而对于引用变量来说,它的值则是对一个对象的引用,故可以用null(空引用)对其赋值。

大佬这个讲的很好 https://www.cnblogs.com/murongxiaopifu/p/4842375.html 。。。本菜鸡实在不知道如何归纳总结了~

概括一下就是,在实际编程中,可能需要让值类型的变量的值既不是负数也不是0,而是真正不存在。在这种情况下,可以使用可空类型来对值类型的空值进行表示。

何时使用值类型何时使用引用类型

值类型有时可以提供更好的性能,而引用类型则是我们习惯用的。那么如何权衡一个类应该为哪个类型呢?

根据参考资料[1][3]两位大佬的说法,只有当一个类型满足以下所有条件,我们才考虑是否将该类型声明为值类型。

  1. 类型不需要从其他类型继承,也不派生出其他任何类型
  2. 该类型的主要职责在于数据存储吗?
  3. 该类型的公有接口都是由访问其数据成员的属性定义的吗?

在满足上述条件的情况下,还必须满足以下任意条件:

  1. 类型的实例较小
  2. 类型的实例较大且不作为方法参数传递

这是因为值类型在方法中充当方法参数传递时,是将值类型中所有字段进行复制的,这会对性能造成影响。

首页 上一页 1 2 下一页 尾页 2/2/2
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
上一篇C#字符串。 下一篇C#中的split的基本用法

最新文章

热门文章

Hot 文章

Python

C 语言

C++基础

大数据基础

linux编程基础

C/C++面试题目