[過去ログ]
C#, C♯, C#相談室 Part96 (1002レス)
C#, C♯, C#相談室 Part96 http://mevius.5ch.net/test/read.cgi/tech/1639965805/
上
下
前次
1-
新
通常表示
512バイト分割
レス栞
抽出解除
必死チェッカー(本家)
(べ)
自ID
レス栞
あぼーん
このスレッドは過去ログ倉庫に格納されています。
次スレ検索
歴削→次スレ
栞削→次スレ
過去ログメニュー
153: デフォルトの名無しさん (ワッチョイ a236-8qwV) [sage] 2022/03/16(水) 00:04:15.38 ID:pAqxvPky0 >>151 なるほど…。 ただ、Unsafe.IsNullRef(ref Unsafe.NullRef<int>()) と書けてこれが true を返すので、 値型に対するヌル参照が定められていない場合は Unsafe.NullRef<T> の T に int が 指定できること自体がバグということになってしまうような気もします。 一応未定義ではないけど、CLR 外部との相互利用等で必要に迫られない限り 使ってくれるなという感じなのでしょうか。 >>152 ご親切に説明していただきどうもありがとうございます。 逆アセンブルの結果に “なぜだか理由は分からないが” 0 になっている部分があって、 そこから x が null にされているというという事実が読み取れる、ということですね。 (まだ間違っていたら大変申し訳ありません) > NullRef<int>が宜しくないのか、それをAddByteOffsetに与えるのがダメなのか NullRef<T> と AddByteOffset<T> のソースコードのコメントにはそれぞれ ldc.i4.0 conv.u ret ldarg.0 ldarg.1 add ret とあって、これを見る限り、NullRef<int>() を AddByteOffset<int> に与えることの問題は 私には読み取れませんでした。 (そもそもこの問題で IL を持ち出すこと自体が見当外れなのでしょうか) もちろん、実際には特殊な JIT 最適化が行われているのでしょうが、 その結果 IL から期待される動作と変わってしまうようなら、 やはりバグとして報告したほうがよいのかなというのが今のところの考えです。 http://mevius.5ch.net/test/read.cgi/tech/1639965805/153
154: デフォルトの名無しさん (ワッチョイ a236-8qwV) [sage] 2022/03/16(水) 00:10:04.98 ID:pAqxvPky0 >>152 > Unsafe.AsRefに直接IntPtr渡せれば/unsafeとせず済むのにね そうなんです!というか、本来私がしたいことからいうと MemoryMarshal.CreateSpan<int> メソッドに IntPtr 型を渡せると一番よいのですが、 それができないのでこのメソッドが受け付けてくれる ref int を作るという方向で考えています。 http://mevius.5ch.net/test/read.cgi/tech/1639965805/154
メモ帳
(0/65535文字)
上
下
前次
1-
新
書
関
写
板
覧
索
設
栞
歴
スレ情報
赤レス抽出
画像レス抽出
歴の未読スレ
AAサムネイル
Google検索
Wikipedia
ぬこの手
ぬこTOP
0.197s*