Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
Unsafe.BitCast のすゝめ。
Search
neno
January 11, 2025
Technology
0
330
Unsafe.BitCast のすゝめ。
.NET Conf 2024 Osaka x Fukuoka の LT 登壇資料
ブログ:
Unsafe.BitCast のすゝめ。
neno
January 11, 2025
Tweet
Share
More Decks by neno
See All by neno
C# 14 / .NET 10 の新機能 (RC 1 時点)
nenonaninu
1
2.3k
Aspire をカスタマイズしよう & Aspire 9.2
nenonaninu
0
770
分解して理解する Aspire
nenonaninu
2
2.7k
.NET 9 のパフォーマンス改善
nenonaninu
0
3.4k
C# 13 / .NET 9 の新機能 (RC 1 時点)
nenonaninu
1
2.6k
Re:ゼロから始める Observability
nenonaninu
3
1.3k
Node-AI のリッチな WEB フロントエンドを支える技術
nenonaninu
3
1.7k
C# ではじめる OpenTelemetry
nenonaninu
0
5.8k
.NET 8 で既定で有効になった Dynamic PGO について
nenonaninu
3
11k
Other Decks in Technology
See All in Technology
自然言語でAPI作業を片付ける!「Postman Agent Mode」
nagix
0
100
ある編集者のこれまでとこれから —— 開発者コミュニティと歩んだ四半世紀
inao
5
3.5k
やり方は一つだけじゃない、正解だけを目指さず寄り道やその先まで自分流に楽しむ趣味プログラミングの探求 2025-11-15 YAPC::Fukuoka
sugyan
3
900
AI エージェントを評価するための温故知新と Spec Driven Evaluation
icoxfog417
PRO
1
420
Bedrock のコスト監視設計
fohte
2
200
レガシーで硬直したテーブル設計から変更容易で柔軟なテーブル設計にする
red_frasco
4
420
セマンティックHTMLによる アクセシビリティ品質向上の基礎
zozotech
PRO
0
120
身近なCSVを活用する!AWSのデータ分析基盤アーキテクチャ
koosun
0
2k
Javaコミュニティの歩き方 ~参加から貢献まで、すべて教えます~
tabatad
0
140
AIを前提に、業務を”再構築”せよ IVRyの9ヶ月にわたる挑戦と未来の働き方 (BTCONJP2025)
yueda256
1
790
技術広報のOKRで生み出す 開発組織への価値 〜 カンファレンス協賛を通して育む学びの文化 〜 / Creating Value for Development Organisations Through Technical Communications OKRs — Nurturing a Culture of Learning Through Conference Sponsorship —
pauli
5
490
Perlの生きのこり - YAPC::Fukuoka 2025
kfly8
0
510
Featured
See All Featured
Bootstrapping a Software Product
garrettdimon
PRO
307
110k
How to train your dragon (web standard)
notwaldorf
97
6.4k
10 Git Anti Patterns You Should be Aware of
lemiorhan
PRO
658
61k
Build The Right Thing And Hit Your Dates
maggiecrowley
38
2.9k
Docker and Python
trallard
46
3.7k
GraphQLの誤解/rethinking-graphql
sonatard
73
11k
Producing Creativity
orderedlist
PRO
348
40k
A Modern Web Designer's Workflow
chriscoyier
697
190k
Understanding Cognitive Biases in Performance Measurement
bluesmoon
31
2.7k
Sharpening the Axe: The Primacy of Toolmaking
bcantrill
46
2.6k
Fight the Zombie Pattern Library - RWD Summit 2016
marcelosomers
234
17k
Building a Scalable Design System with Sketch
lauravandoore
463
33k
Transcript
Unsafe.BitCast のすゝめ。 . NET Conf 2024 Osaka x Fukuoka 2025/01/11
何縫ねの。
何縫ねの。 NTT コミュニケーションズ イノベーションセンター Microsoft MVP for Developer Technologies (2024~)
.NET / Web Development nenoNaninu @nenoMake ブログ https://blog.neno.dev その他 https://neno.dev
OSS SignalR 周りのいろいろ開発しています •TypedSignalR.Client • C# の SignalR Client を強く型付けするための
Source Generator •TypedSignalR.Client.TypeScript • TypeScript の SignalR Client を強く型付けするための .NET Tool / library •TypedSignalR.Client.DevTools • SignalR 向けに Swagger UI 相当の GUI を自動生成する library •AspNetCore.SignalR.OpenTelemetry • SignalR の OpenTelemetry 対応 + log 強化 https://github.com/nenoNaninu
C# 13 / .NET 9 関連資料 新機能について語っています…! https://speakerdeck.com/nenonaninu/net-9-noxin-ji-neng-rc-1-shi-dian
C# 13 / .NET 9 関連資料 パフォーマンス改善についても語っています…! https://speakerdeck.com/nenonaninu/dot-net-9-nopahuomansugai-shan
Unsafe.As 使っていますか?
Unsafe.As は危険① サイズの違う値型をキャストした場合、意図しないメモリ領域を読んでしまう
Unsafe.As は危険② 参照型をキャストした場合
Unsafe.As は使い方を絞れば安全 •メモリレイアウトが同一な構造体 •サイズが同一で参照型を含まない構造体
そこで Unsafe.BitCast ですよ
Unsafe.As と Unsafe.BitCast
Unsafe.BitCast の特徴 •Unsafe.BitCast の型引数として渡せるのは構造体だけ • 構造体でなかったら実行時例外 •キャスト元とキャスト先の構造体のサイズは同一でなければならない • サイズが同一でなければ実行時例外 •パラメータは参照渡しではなく値渡し
Unsafe.As より 安全かつパフォーマンスも改善
Unsafe.BitCast はいいぞ
ブログに書いています https://blog.neno.dev/entry/2025/01/07/182438