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
320
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
1.7k
Aspire をカスタマイズしよう & Aspire 9.2
nenonaninu
0
740
分解して理解する Aspire
nenonaninu
2
2.6k
.NET 9 のパフォーマンス改善
nenonaninu
0
3.3k
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.6k
.NET 8 で既定で有効になった Dynamic PGO について
nenonaninu
3
11k
Other Decks in Technology
See All in Technology
20251007: What happens when multi-agent systems become larger? (CyberAgent, Inc)
ornew
1
260
M5製品で作るポン置きセルラー対応カメラ
sayacom
0
180
Introduction to Bill One Development Engineer
sansan33
PRO
0
300
技育祭2025【秋】 企業ピッチ/登壇資料(高橋 悟生)
hacobu
PRO
0
100
JAZUG 15周年記念 × JAT「AI Agent開発者必見:"今"のOracle技術で拡張するAzure × OCIの共存アーキテクチャ」
shisyu_gaku
1
160
OCI Network Firewall 概要
oracle4engineer
PRO
2
7.9k
成長自己責任時代のあるきかた/How to navigate the era of personal responsibility for growth
kwappa
4
320
AI時代こそ求められる設計力- AWSクラウドデザインパターン3選で信頼性と拡張性を高める-
kenichirokimura
3
300
そのWAFのブロック、どう活かす? サービスを守るための実践的多層防御と思考法 / WAF blocks defense decision
kaminashi
0
190
AIツールでどこまでデザインを忠実に実装できるのか
oikon48
6
3.3k
Wasmのエコシステムを使った ツール作成方法
askua
0
140
スタートアップにおけるこれからの「データ整備」
shomaekawa
2
450
Featured
See All Featured
Product Roadmaps are Hard
iamctodd
PRO
54
11k
Being A Developer After 40
akosma
91
590k
Bash Introduction
62gerente
615
210k
10 Git Anti Patterns You Should be Aware of
lemiorhan
PRO
657
61k
Building Better People: How to give real-time feedback that sticks.
wjessup
369
20k
Evolution of real-time – Irina Nazarova, EuRuKo, 2024
irinanazarova
9
980
StorybookのUI Testing Handbookを読んだ
zakiyama
31
6.2k
Principles of Awesome APIs and How to Build Them.
keavy
127
17k
No one is an island. Learnings from fostering a developers community.
thoeni
21
3.5k
Become a Pro
speakerdeck
PRO
29
5.5k
Sharpening the Axe: The Primacy of Toolmaking
bcantrill
45
2.5k
Automating Front-end Workflow
addyosmani
1371
200k
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