找回密码
 立即注册
首页 业界区 业界 SW 随笔 001 — InlineArray 带你飞(Since C#12) ...

SW 随笔 001 — InlineArray 带你飞(Since C#12)

仰翡邸 9 小时前
声明:个人笔记,概不负责
开篇放水

这几天与 Copilot 对话,被种草了一个 InlineArray C# 特性,一个符合 native 思维的 数组 表达。
这东西还是 safe 的,啊,香,真香 ……… 太香了!
进一步资料
// C# 12 - .NET 8  (2023-11)
设计:https://github.com/dotnet/runtime/blob/main/docs/design/features/InlineArrayAttribute.md
手册:https://learn.microsoft.com/en-us/dotnet/api/system.runtime.compilerservices.inlinearrayattribute
提醒: 一定要用 AI 去查一下 InlineArray 的概念啊,网上一些水货,在瞎逼逼,尤其是中文社区的文章,不知道抄的哪里 鬼子的文章。
我是随便写的,写完看了几个 网上的文章,瞬间不懂了。拿 AI 问了一下 疑惑点 …… 这帮水货,怎么可以,如此的不要脸。
==
说实话,当年我是看到文档的,实在不知道这东西在干嘛,不懂的太多没办法,所以略过了。
现在的语言 3 年过后,就有很多新东西;5 年过后,就大变样;10 年过后,就得当一门新语言来学。
这是好事,许多年前,语言就像死了一样,发明过后没啥 的变化。
简单的讲 Morden C# 已经越来越像 C++ ; 而 Morden C++ 也越来越像 C#
2018 年 C# 7.2 (.NET Core 2.1) 引入 Span 后,这 C# 就开始往 native 的路上放飞自我了 ……
2020 年 C++20 引入 module 后,这 C++ 体质、物种都变了,原来是 像农业国家,现在像 工业国家 ……
千年不变的是 C 语言,这是好事,这东西变化太多,许多工业基础就得废。整个计算机行业,都得崩塌。
现在有了 AI 学点新东西,简直是 指数级 省时间!
可能,缩短 两个数量级 的时间,以上!
我是无意间和 Copilot 会话时,带出 旧代码的 使用部分,这东西猜到了我的实现,然后推荐了个更好的
代码就一句话

现在的代码
  1. /// <summary>
  2. /// A simple helper to map a null-terminated C string to a C# string
  3. /// </summary>
  4. [InlineArray(64)] // C# 12 - .NET 8  (2023-11)
  5. public struct AsciiBytes64
  6. {
  7.     private byte Buffer;
  8.     public static implicit operator string(AsciiBytes64 s) => s[..].AsciiBytesToString();
  9.     public override string ToString() => this[..].AsciiBytesToString();
  10. }
复制代码
之前的代码
  1. /// <summary>
  2. /// A simple helper to map a null-terminated C string to a C# string
  3. /// </summary>
  4. public unsafe struct NullTerminatedString
  5. {
  6.     // hard-coded size since C# generic does not support const arg
  7.     //
  8.     private fixed byte Buffer[64];
  9.     public static implicit operator string(NullTerminatedString s)
  10.     {
  11.         string str = new string((sbyte*)s.Buffer);
  12.         return str;
  13.     }
  14.     public override string ToString()
  15.     {
  16.         return this;
  17.     }
  18. }
复制代码
尾声装逼

InlineArray 设计文档里的例子,简直就是我一直梦寐以求的东西,这东西值得在 native 里也搞一把!
上封天,下封地。
什么 union 的,奇技淫巧,都可以直接团灭。
上封天,(概念里的 开放式、可扩展)类型系统。
下封地,(落地实际要给的)连续的 bytes. —— 即,所谓高手闭口不谈的 object model(其实满大街都是资料)
AI 时代,这种 所谓高手 就是 渣渣灰
无论 高手的语种,无论 “封你做高手,高手,高高手” 的(企业内的)行政级别,无论 你的经验。
AI 都会 —— 无情的 碾压,瞬间 秒掉。
===没有啦,结束了

来源:程序园用户自行投稿发布,如果侵权,请联系站长删除
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!

相关推荐

您需要登录后才可以回帖 登录 | 立即注册