Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Sign up for free
Menu
Search
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
Unsafe.BitCast のすゝめ。
Search
Sponsored
·
Your Podcast. Everywhere. Effortlessly.
Share. Educate. Inspire. Entertain. You do you. We'll handle the rest.
→
neno
January 11, 2025
Technology
440
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
Cloudflare Workers 向けアプリを C# で構築する ~WASM Native AOT への道~
nenonaninu
1
2.3k
大 AI 時代におけるC# の事情 ~ぶっちゃけトークを交えながら~
nenonaninu
1
1.1k
.NET 10 のパフォーマンス改善
nenonaninu
3
7.8k
C# 14 / .NET 10 の新機能 (RC 1 時点)
nenonaninu
1
3.3k
Aspire をカスタマイズしよう & Aspire 9.2
nenonaninu
0
1.1k
分解して理解する Aspire
nenonaninu
2
3.3k
.NET 9 のパフォーマンス改善
nenonaninu
0
4k
C# 13 / .NET 9 の新機能 (RC 1 時点)
nenonaninu
1
2.9k
Re:ゼロから始める Observability
nenonaninu
4
1.6k
Other Decks in Technology
See All in Technology
【データ横丁主催】AI Agentがコンテキストを使って仕事をした後、何が残るのか― 組織の経験を次の判断に引き継ぐ「Agent Memory」
shisyu_gaku
2
340
検証フェーズはAIの回答を判断するための学習機会
toru_kubota
2
510
FinTech 1-2 : Overview of FinTech
ks91
PRO
0
150
「Docker Desktop不要の時代」は 来たのか?
ueponx
0
170
DWH の限界突破! AI エージェント向け爆速リアルタイムデータ基盤 ClickHouse
jozono
1
220
DevelopersIO 2026 知識の地図を描く ─ オントロジーとは何か?
ishikawa_satoru
1
210
Lambda MicroVMsが分からなすぎたので使い所を1から考えてみた
tsukuboshi
2
430
Execution in the Kingdom of Agents: Reflections on Abstraction and Complexity
bcantrill
0
870
脆弱性診断って、何をしているの? 〜弱点を見つけて、会社の改善につなげるまで〜
keeg
0
460
組み立てて楽しむ AWS Blocks 入門
kmiya84377
0
220
しろおびから始める!ログ活用の第一歩
shumei_ito
0
470
1万名の社員が使う認証基盤で どう信頼性を担保するか?
kairim0
0
210
Featured
See All Featured
How to Build an AI Search Optimization Roadmap - Criteria and Steps to Take #SEOIRL
aleyda
1
2.2k
Designing Powerful Visuals for Engaging Learning
tmiket
1
600
Making the Leap to Tech Lead
cromwellryan
135
10k
Code Reviewing Like a Champion
maltzj
529
40k
B2B Lead Gen: Tactics, Traps & Triumph
marketingsoph
0
260
A brief & incomplete history of UX Design for the World Wide Web: 1989–2019
jct
2
530
Information Architects: The Missing Link in Design Systems
soysaucechin
1
1.2k
Navigating Weather and Climate Data
rabernat
0
550
Google's AI Overviews - The New Search
badams
0
1.6k
Joys of Absence: A Defence of Solitary Play
codingconduct
1
530
実際に使うSQLの書き方 徹底解説 / pgcon21j-tutorial
soudai
PRO
203
76k
The Straight Up "How To Draw Better" Workshop
denniskardys
239
140k
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