.NET 欢乐编程术之类型超级转换之术

  准备工作:先确保 VS 版本大于 2017,且支持C# 7.0 语言版本。然后新建 .Net Core 项目,在 Nuget 包管理上引入微软霸霸官方包 System.Runtime.CompilerServices.Unsafe。此包提供了非常底层又符合 .Net CLR 的 API,包括操作指针,引用,内存的方法。

  接下来我们就可以利用这个包,去获取一个字符串的内存信息,然后更改这个字符串的内容。众所周知,.Net 中的字符串是不可变的,C# 和 .Net 都极大的限制程序员不可修改字符串的内容,因为一旦修改了字符串的内容,将破环 CLR 的规则,使得程序变得不稳定。

  首先我们定义一个与 String 类型字段结构完全一样的类型

public sealed class MyString { /// <summary> /// 字符串的长度。 /// </summary> public int _stringLength; /// <summary> /// 字符串第一个字符,它与后续的字符的内存是连续的。 /// </summary> public char _firstChar; }

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/zgypxs.html