!extend:checked:vvvvv:1000:512
!extend:checked:vvvvv:1000:512
■Visual Studio 2017 Community(無償の統合開発環境)等はこちら
http://www.visualstudio.com/downloads/
■コードを貼る場合はこちら
http://ideone.com/
■前スレ
C#, C♯, C#相談室 Part94
https://mevius.5ch.net/test/read.cgi/tech/1553075856/
■次スレは>>970が建てる事。
建てられない場合は他を指定する事。
VIPQ2_EXTDAT: checked:vvvvv:1000:512:: EXT was configured
探検
C#, C♯, C#相談室 Part96
■ このスレッドは過去ログ倉庫に格納されています
1デフォルトの名無しさん (ワッチョイ 7633-kUv4)
2021/12/20(月) 11:03:25.88ID:sdn/+VfW0153デフォルトの名無しさん (ワッチョイ a236-8qwV)
2022/03/16(水) 00:04:15.38ID: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 から期待される動作と変わってしまうようなら、
やはりバグとして報告したほうがよいのかなというのが今のところの考えです。
なるほど…。
ただ、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 から期待される動作と変わってしまうようなら、
やはりバグとして報告したほうがよいのかなというのが今のところの考えです。
154デフォルトの名無しさん (ワッチョイ a236-8qwV)
2022/03/16(水) 00:10:04.98ID:pAqxvPky0 >>152
> Unsafe.AsRefに直接IntPtr渡せれば/unsafeとせず済むのにね
そうなんです!というか、本来私がしたいことからいうと
MemoryMarshal.CreateSpan<int> メソッドに IntPtr 型を渡せると一番よいのですが、
それができないのでこのメソッドが受け付けてくれる ref int を作るという方向で考えています。
> Unsafe.AsRefに直接IntPtr渡せれば/unsafeとせず済むのにね
そうなんです!というか、本来私がしたいことからいうと
MemoryMarshal.CreateSpan<int> メソッドに IntPtr 型を渡せると一番よいのですが、
それができないのでこのメソッドが受け付けてくれる ref int を作るという方向で考えています。
■ このスレッドは過去ログ倉庫に格納されています
ニュース
- 【対日戦略】中国とロシア、対日共闘で一致 「軍国主義復活に反撃」… ★5 [BFU★]
- カルボナーラ論争勃発…イタリアの農相がイタリア風の商品に“怒りの投稿” [夜のけいちゃん★]
- 【話題】おでんの好きな具は?! 「だいこん」「たまご」「もち巾着」「ちくわぶ」「こんにゃく」「牛すじ」★2 [ひぃぃ★]
- 【文春】松岡昌宏が「日本テレビへの戸惑い」を語った!「鉄腕DASHの出演について、我々に進退を決める選択肢はないんだなと思った」 [Ailuropoda melanoleuca★]
- 【社会】丸亀製麺12月24日は15時30分で閉店 従業員とその家族のため [あずささん★]
- 【野球】山川穂高、WBCは「全く出たくない」「怖い」「みんなメリットにしか目が行ってない」 前回出場も「テレビの前で応援したい」 [冬月記者★]
- じゃん拳、グー🏡💥👊😅👊💥🏡
- amazon配送、流石に創造力の欠如が限界突破して炎上wwwwwwwwwwwwwwwwwwwww [329329848]
- タバコ違法化、日本人の9割が賛成 [279254606]
- ネトウヨ「俺等が望む東アジアはこれな。」画像ペタッ 1万いいね [165981677]
- 今は高市が世論の支持を受けてるさ。だけど、50年後の日本で教科書に英雄として載るのは戦争に反対し続けた俺たちなんだよ [237216734]
- 高市「台湾に関する日本の立場に一切の変更はない」もう国難だろコイツ🤔 [993451824]
