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
410
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
Unsafe.BitCast のすゝめ。
.NET Conf 2024 Osaka x Fukuoka の LT 登壇資料
ブログ:
Unsafe.BitCast のすゝめ。
neno
January 11, 2025
More Decks by neno
See All by neno
.NET 10 のパフォーマンス改善
nenonaninu
3
7.4k
C# 14 / .NET 10 の新機能 (RC 1 時点)
nenonaninu
1
3.1k
Aspire をカスタマイズしよう & Aspire 9.2
nenonaninu
0
1.1k
分解して理解する Aspire
nenonaninu
2
3.2k
.NET 9 のパフォーマンス改善
nenonaninu
0
3.9k
C# 13 / .NET 9 の新機能 (RC 1 時点)
nenonaninu
1
2.8k
Re:ゼロから始める Observability
nenonaninu
3
1.6k
Node-AI のリッチな WEB フロントエンドを支える技術
nenonaninu
3
2.2k
C# ではじめる OpenTelemetry
nenonaninu
0
6.4k
Other Decks in Technology
See All in Technology
Baseline対応のDOMの型定義を作った
uhyo
2
610
プライバシー保護の理論と実践
lycorptech_jp
PRO
1
230
Docker Desktop不要の時代が来る? WSL標準の「wslc」で Linuxコンテナを動かしてみた.
ueponx
0
560
認証認可だけじゃない! ID管理の構成要素と ライフサイクルを意識しよう
ritou
1
450
製造現場での生成AIの活用、およびエージェントAIの実装のあり方、AVEVAの取り組み
iotcomjpadmin
0
220
AI Agentをシステムに組み込む前にゆるく向き合ってみる
hayama17
0
190
次世代ランサムウェア対策の考察 / 20260704 Mitsutoshi Matsuo
shift_evolve
PRO
5
1.7k
そこにあるから地図ができる~位置を示す"モノ"を愉しむ~ - Interface 2026年6月号GPS特集オフ会 / interface_202606_GPS_offline
sakaik
1
190
本当の”仕事”を手放せる未来が見えた
mu7889yoon
0
220
フルカイテン株式会社 エンジニア向け採用資料
fullkaiten
0
11k
Kotlin 開発のツラミを爆破した話! / Explode the difficulty of Kotlin dev!
eller86
0
140
Hatena Engineer Seminar 37 jj1uzh
jj1uzh
0
420
Featured
See All Featured
Leadership Guide Workshop - DevTernity 2021
reverentgeek
1
320
Paper Plane
katiecoart
PRO
1
52k
Learning to Love Humans: Emotional Interface Design
aarron
275
41k
Bash Introduction
62gerente
615
220k
The browser strikes back
jonoalderson
0
1.4k
Game over? The fight for quality and originality in the time of robots
wayneb77
1
210
JavaScript: Past, Present, and Future - NDC Porto 2020
reverentgeek
52
6k
Ethics towards AI in product and experience design
skipperchong
2
320
jQuery: Nuts, Bolts and Bling
dougneiner
66
8.5k
Joys of Absence: A Defence of Solitary Play
codingconduct
1
410
Navigating Team Friction
lara
192
16k
DBのスキルで生き残る技術 - AI時代におけるテーブル設計の勘所
soudai
PRO
67
56k
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