C#中值类型和引用类型及类型的转换
时间:2022-06-11
本文章向大家介绍C#中值类型和引用类型及类型的转换,主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
版权声明:本文为吴孔云博客原创文章,转载请注明出处并带上链接,谢谢。 https://blog.csdn.net/wkyseo/article/details/52911145
在 C# 中,变量分为以下几种类型:
- 值类型(Value types)
- 引用类型(Reference types)
- 指针类型(Pointer types)
和Javascript一样,值类型保存在栈中,引用类型值存储在堆中,值的引用保存在栈中。数据操作运算和js一样,值类型复制copy值本身,引用类型复制copy引用指针。有一个区别就是在C#中String类型是引用类型。
值类型
值类型变量可以直接分配给一个值。它们是从类 System.ValueType 中派生的,值存储在栈中。 值类型直接包含数据。比如 int、char、float,它们分别存储数字、字母、浮点数。
引用类型
引用类型不包含存储在变量中的实际数据,但它们包含对变量的引用。 引用位置保存在栈中,数据存储在堆中 换句话说,它们指的是一个内存位置。使用多个变量(栈引用)时,引用类型可以指向一个内存位置(堆)。如果内存位置的数据是由一个变量改变的,其他变量(栈引用)会自动反映这种值的变化。内置的 引用类型有:object、dynamic 和 string。
字符串(String)类型的值可以通过两种形式进行分配:引号和 @引号。
C# string 字符串的前面可以加 @(称作”逐字字符串”)将转义字符()当作普通字符对待,比如:
string str = @"C:Windows";
等价于:
string str = "C:\Windows";
string s1 = "kenny";
string s2 = "kenny";
Console.WriteLine(s1 == s2); //True
Console.WriteLine((Object)s1 == (Object)s2); //True
//公司.Neter说字符串会做缓存处理,其他引用类型不会相等,证实确实这样
指针类型(Pointer types)
指针类型变量存储另一种类型的内存地址。C# 中的指针与 C 或 C++ 中的指针有相同的功能。 声明指针类型的语法:
type* identifier;
类型转换
- 隐式类型转换 - 这些转换是 C# 默认的以安全方式进行的转换。例如,从小的整数类型转换为大的整数类型,从派生类转换为基类。
- 显式类型转换 - 使用预定义的函数显式完成的。显式转换需要强制转换运算符。
namespace TypeConversionApplication
{
class ExplicitConversion
{
static void Main(string[] args)
{
double d = 5673.74;
int i;
// 强制转换 double 为 int
i = (int)d;
Console.WriteLine(i);
Console.ReadKey();
}
}
}
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- PAT (Basic Level) Practice (中文)1054 求平均值 (20 分)
- zookeeper集群的搭建
- 【Java】07 常见 API
- 【Java】04 数组
- hadoop分布式格式化时出现异常java.net.unknownhostexception
- 【Java】05 面向对象
- 【Java】08 集合
- PAT (Advanced Level) Practice 1001 A B Format (20 分)
- 【Java】09 List 集合与 Collections 工具类
- PAT (Advanced Level) Practice 1003 Emergency (25 分)
- 数据结构严书习题6.65已知前中序,求二叉链表
- 【Java】10 Deque 接口
- 12.深入k8s:kubelet创建pod流程源码分析
- (较为详细)树的遍历方式一览(附完整源码可在VScode与cb运行)
- 【Java】12 Map 集合