タイトル : Re^2: 素通りされてしまう関数について。 投稿日 : 2005/04/04(Mon) 13:56 投稿者 : nao
[OSのVer]:Windows [VBのVer]:VB.NET naoです。返答が遅れて申し訳有りません。 [To 花ちゃんさん] > > Private Function Func_A > > Dim DV as new DataView ←プロパティの値が "error: cannot obtain value"になる。 > > ・・・ > > Function_B(DV) ←Function_Bは実行されず、素通り。 > > ・・・ > > End Function > > > > Private Func_B(Byval DV as DataView) > > ・・・ > > End Function > > これ実際に使っているコードですか? それとも適当なコード(でたらめな) > Function_B ってどこにあるの? > 再現できる簡単なコードをペースト(手書きでなく)して下さい。 すいません。適当なコードを使用していました。 Function_B → Func_B の間違いです。 また、使用する引数も一つ(DataView)だけではなく、実際は複数存在しています。 今後は実際に再現できるコードを書かせていただきます。本当にすいません。 [To じゃんぬねっとさん] > > error: cannot obtain value > うーん... 情報が少ないですねぇ... > hhttp://www.gotdotnet.com/community/messageboard/Thread.aspx?id=286959 えぇ。私も調べてみたのですがほとんどヒットしなくて。 教えていただいたアドレスを元に調べてみましたが・・・同じように困っている方がいるのですね。 解決はできなかったのですが、エラーの発生条件をちょっと勉強できました。 > > Function_Bは実行されず、素通り。 > こちらに関しては別の問題な気がします。 > 素通りしたと確信した理由はなんですか? > メソッド内の先頭にブレイクポイント置きました? > System.Diagnostics.DebuggerStepThrough() 属性がついてません? 素通りの確認には、仰るとおり、メソッド内の先頭にブレイクポイントを置くことで調べていました。 また、System.Diagnostics.DebuggerStepThrough()属性についてですが、ソースを見た限りついていな いと思います。 (ソースコードをこの属性名で検索して、関数名の前で見つからなければ属性はついていないと判断したのですが・・・よろしいのでしょうか?) あの後、じゃんぬねっとさんの”別の原因”という言葉が気になって調べて見たところ、素通りを解消することができました。 Func_Bについてですが、実は他にも引数を幾つか指定していて、その中の”構造体”の指定で失敗していたようです。原因が記述以外の点であったことをお詫び致します。 原因となる要素がわかりましたので、今回は構造体を取り除いて、別の変数に置き換えることで素通り を防ぎました。 調べていく上でわかったことなのですが、この不正な引数を含む関数があることで、呼び元の関数にも影響を及ぼしていることが判明しました。 具体的には、呼び元で宣言した変数のプロパティ値をエラーにしてしまうという事態です。 同様の症状が発生した方は参考までに。 詳しい理由は不明なのですが、追って調査していこうと思います。 花ちゃんさん、じゃんぬねっとさん、どうもありがとうございました〜。 |