.NET 字符串的内部格式是什么?

2023-12-30

我正在 C#.NET 中编写一些漂亮的字符串操作密集型代码,并对我记得不久前读过的一些 Joel Spolsky 文章感到好奇:

http://www.joelonsoftware.com/articles/fog0000000319.html http://www.joelonsoftware.com/articles/fog0000000319.html
http://www.joelonsoftware.com/articles/Unicode.html http://www.joelonsoftware.com/articles/Unicode.html

那么,.NET 是如何做到的呢?每个字符两个字节?有一些 Unicode 字符^H^H^H^H^H 代码点需要更多。长度是如何编码的?


在乔恩·斯基特 (Jon Skeet) 出现之前,这里有一个他的链接关于字符串的优秀博客 http://csharpindepth.com/Articles/General/Strings.aspx in C#.

至少在当前实现中,字符串占用 20+(n/2)*4 个字节(向下舍入 n/2 的值),其中 n 是字符串中的字符数。字符串类型的不同寻常之处在于对象本身的大小各不相同

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

.NET 字符串的内部格式是什么? 的相关文章

  • python中打印字符串的长度

    有没有什么方法可以找到 即使是最好的猜测 Python中字符串的 打印 长度 例如 potaa bto 是 8 个字符len但 tty 上只打印 6 个字符宽 预期用途 s potato x1b 01 32mpotato x1b 0 0mp
  • C#中Enum中定义的value__是什么

    What value 可能在这里 value MSN ICQ YahooChat GoogleTalk 我运行的代码很简单 namespace EnumReflection enum Messengers MSN ICQ YahooChat
  • .NET JIT 编译的代码缓存在哪里?

    NET 程序首先被编译为 MSIL 代码 当它被执行时 JIT编译器会将其编译为本机机器代码 我想知道 这些JIT编译的机器代码存储在哪里 它只存储在进程的地址空间中吗 但由于程序的第二次启动比第一次快得多 我认为即使在执行完成后 该本机代
  • 为什么使用 HTTP 动词?

    因为动词的目标是像 server domain getallrecords 或 server domain delete1record 或类似的 URL 而getallrecords delete1record都是专门为特定目的而设计的 为
  • 新的 .NET 6 控制台模板中的 C# 函数重载不起作用

    我在尝试重载该函数时遇到错误Print object in the 新的 NET 6 C 控制台应用程序模板 https learn microsoft com en us dotnet core tutorials top level t
  • 我可以在不创建 DLL 的情况下使用同一项目中的 UserControl 吗?

    我制作了一个用户控件 并且已经能够通过将其添加到 C 代码中的表单来使用它 用户控件与主窗体位于同一 VS2005 项目中 问题是我无法通过此实现在 gui 编辑器 Design 窗口 中看到用户控件 我尝试了很多方法 但无法将用户控件添加
  • 如何在node.js中使用混合C++和.Net dll? (错误:已调用 abort())

    我想在 Visual Studio 2015 中使用包含 C 和 C 代码的 dll 创建本机节点扩展 我无法使其工作如下我自己的指示 https stackoverflow com q 11257690 709537去年的 这是基于最新的
  • 使用 perl 比较两个 Unicode 字符串

    当我运行以下代码时 它不会进入 在此处执行某些操作 部分 my a P 3 lt 1 my b P 3 lt 1 if a ne b do something here 还有另一种方法可以将 Unicode 字符串与 perl 进行比较吗
  • 从 str 转换为 float 时保持尾随 0

    将带有尾随零的数字从字符串转换为浮点数时遇到以下问题 a 1 100 string a str a float a float string a float a 1 1 有没有办法将 str 转换为 float 同时保留末尾的尾随 0 首先
  • NSAttributedString 和表情符号:位置和长度问题

    我正在使用 NSAttributedString 对来自 API 的文本的某些部分 如 Twitter 上的 mention 进行着色 API 为我提供了文本和代表文本中应着色的部分 或链接 标签等 的实体数组 但有时 颜色会因为表情符号而
  • “System.Int32”类型的表达式不能用于返回类型“System.Object”

    我正在尝试制作一个简单的脚本系统 用于打印标签 我过去曾通过反射完成此操作 没有任何问题 但我现在尝试使用 Lambda 函数来完成此操作 以便可以缓存函数以供重用 到目前为止我的代码如下 public static string GetV
  • 登录方式使用GINA定制

    我知道在 GINA 中找到大师并不容易 但我的问题最接近进程间通信 IPC 我用非托管 c 编写了我的自定义 GINA 我在其中包含了一个方法来检查用户尝试的指纹的有效性为了登录 该函数将调用正在运行的系统Windows服务中用C 编写的一
  • .NET Core Azure WebJobs 不从 Azure 应用程序设置读取

    I have an app service running with it s respective ConnectionString from Azure Portal The ConnectionString is point to A
  • 如何嘲笑一切?

    我了解如何模拟接口或虚拟方法调用 但是像 TypeMock 这样的框架可以模拟框架中的所有内容 使用哪些 NET机制来提供此类功能 例如 Typemock Isolator 使用 CLR分析器API http msdn microsoft
  • 两个 C# 扩展泛型方法之间的不明确调用,其中一个 where T:class 和另一个 where T:struct

    考虑两种扩展方法 public static T MyExtension
  • 基本 C++ 文本对齐

    我正在尝试编写一个程序 该程序从文件中获取输入行并使其恰好为 80 个字符 假设输入行始终小于 80 然后打印该行 这是通过在以下标点符号后添加最多两个空格来完成的 如果一行少于 41 个字符 则不加修改地打印 如果该行仍然不是 80 个字
  • 什么是标准 unicode 字体?

    以下操作系统的标准 unicode 字体是什么 视窗XP 视窗Vista Window 7 按照标准 我的意思是它们存在于操作系统的全新安装中 无需将它们作为附加包安装 我一直在寻找同样的东西 看起来所有 Win 操作系统中只有一种字体 L
  • “为 .Net 1.1 生成 Web 服务代理的任何工具”

    我有一个 WSDL 文件 其中包含指向外部 XSD 的链接 我也将 xsd 部署到了正确的相对路径 因为它在 WSDL 中是引用的 当我尝试使用 VS 2003 Net 1 1 wsdl 工具 生成代理时 代理未生成 然而它在 VS 200
  • 创建仅包含枚举的 COM 库时出现问题

    我正在做一个 COM 互操作项目 用 C 和 NET Interop 替代一些 VB 和 C ATL COM 项目 当我在 NET 中定义枚举并将它们设为 ComVisible 时 它 们会公开为 Typelib EnumType Enum
  • 从 git 签出后 nuget dll 丢失

    I have a C solution containing different projects On those projects I have some normal nuget packages like Newtonsoft Js

随机推荐

  • 如果仓库自动查看自述文件,自述文件中的相对链接就会损坏

    我有一个仓库作为 github 上组织的一部分 例如 MYORGANIZATION MyRepository 该存储库包含一个 README md 文件 在此 README md 文件中 我有一个链接 因此另一个 md 文件位于与 READ
  • Xampp-mysql - “引擎中不存在表”#1932

    移动 xampp 文件夹后出现 Xampp 错误 Apache 运行良好 如下图所示 我成功运行 apache 但无法运行 mysql 如果我移动并运行 xampp apache 和 mysql 但它显示的错误是新鲜的 并且显示类似 引擎中
  • 将 exec-maven-plugin 的输出分配给变量

    我想使用 exec maven plugin 来获取 git revision 所以我使用以下配置
  • 用于执行 python 脚本的 Vim 键映射

    我第一次尝试在 Vim 中映射命令 我希望它执行当前的 python 脚本 所以我将以下内容放入我的 vimrc noremap
  • 添加 $ 并舍入小数点后 2 位 SQL

    我正在寻找格式化由子查询创建的输出 该子查询生成一个计算字段 我希望将其格式化为 XX XX 子查询 select avg retail from cars where brand FORD or brand TOYOTA as AVG B
  • 使用 ICC 配置文件将 RGB 转换为 CMYK

    我即将将 RGB 颜色转换为 CMYK 以便打印 此转换的规模是 Adob e Photoshop Image gt Mode gt CMYK color 我尝试了 2 个解决方案 但没有一个返回正确的值 解决方案 1 使用 NET Fra
  • webpack --watch 不编译更改的文件

    我尝试跑步webpack watch编辑我的 JS 文件后 它不会触发自动重新编译 我尝试过重新安装webpack using npm uninstall但它仍然不起作用 有任何想法吗 如果您的代码没有被重新编译 请尝试增加观察者的数量 在
  • 何时使用后值[重复]

    这个问题在这里已经有答案了 在下面的一段代码中 viewModelScope launch isLoading postValue true 我们在主线程中 因为viewModelScope launch默认在主线程上运行 与viewMod
  • 使用自定义消息捕获和处理 Jackson 异常

    我希望能够捕获我正在开发的 spring boot API 中发生的一些 Jackson 异常 例如 我有以下请求类 我想捕获当 JSON 请求对象中的 questionnaireResponse 键为 null 或空白时发生的错误 即 在
  • 局部变量与实例变量

    我对使用 XNA 构建的游戏的 C 优化进行了大量研究 但我仍然不太明白局部变量是否是实例变量 在不断更新和使用时会提供更好的性能 根据http www dotnetperls com optimization http www dotne
  • T-SQL 存储过程 - 动态 AND/OR 运算符

    我只是想知道 MS SQL Server 2005 中是否有一种方法可以将运算符作为存储过程参数传递 如果可能的话 我确实需要避免使用动态 SQL AppOperator AND WHERE 1 1 AppOperator 2 2 这并不是
  • Cruise Control .Net 服务器无法检测在 Starteam 上完成的修改

    我正在使用 Cruise Control Net 1 4 进行持续集成 并将其安装在我的 Windows 2000 桌面上 我有 Nant 0 85 用于构建 我的源代码控制位于 Borland Starteam 2005 中 我安装了 N
  • 如何将照片库加载到UICollectionView中?迅速

    我正在努力实现的目标 对于这个项目 我只会提到两个源文件 1 RPPhotoLibrary swift UICollectionViewController 和 2 PhotoThumbnail swift UICollectionView
  • git push ...致命:无法创建master.lock:文件存在

    帮助 当我尝试做一个git push origin master现在 我得到 fatal Unable to create home ubuntu workspace git refs remotes origin master lock
  • Asp.net Core 中的@Html.EnumDropDownListFor

    我正在 Asp net Core 中移植 MVC5 应用程序 我找不到 Html EnumDropDownListFor 它是否已被弃用并且有替代品吗 有没有任何文档可以让我找到所有这些小的重大更改 对于仍在寻找答案的任何人 在 ASP N
  • 长按手势弹出菜单

    我对 ios 和核心动画都很陌生 所以我正在做一些测试来适应它 我有一个菜单 我试图通过长按手势来创建 我希望按钮先向上动画 然后向下动画 然后消失 我让出现的部分工作了 但我不知道如何让它消失 它也不允许我在 UIGestureRecog
  • 关闭从 WebView 打开的全屏视频后出现白屏

    我有一个WebView带有嵌入的 youtube 视频 我已经使用简单的对话框解决方案实现了全屏模式 如下所示 webView setWebChromeClient new CustomWebChromeClient public clas
  • highcharts 工具提示错误日期

    我制作了一个高图表 该工具提示以格式显示日期和时间 但它显示了错误的日期和时间 请仔细阅读下面的代码 HTML 代码 div style min width 310px height 400px margin 0 div
  • 在Java中,是否可以转换为void(而不是Void)?

    我可以在 X 中添加任何内容来使以下工作正常进行 Object o void X void 理论上是一个原语 尽管大多数人不同意 甚至我怀疑 你不能将一个对象投射到它上面 最接近这一点的是 InvocableHandler 可以return
  • .NET 字符串的内部格式是什么?

    我正在 C NET 中编写一些漂亮的字符串操作密集型代码 并对我记得不久前读过的一些 Joel Spolsky 文章感到好奇 http www joelonsoftware com articles fog0000000319 html h