Object型を型変換するには?

解決


うい  2009-06-17 22:48:11  No: 142083  IP: 192.*.*.*

環境はVisual Basic6です。

Object型を構造体に型変換したいのですが
.NETのCTypeみたいに型変換する方法ありませんか。

初心者な質問ですいませんが、よろしくお願い致します。

編集 削除
魔界の仮面弁士  2009-06-18 11:18:38  No: 142084  IP: 192.*.*.*

> Object型を構造体に型変換したいのですが
その変換を何故必要としているのか、その背景をお聞かせ願えないでしょうか。


> .NETのCTypeみたいに型変換する方法ありませんか。
VB.NET でいうところの構造体は、VB6 ではユーザー定義型となります。

クラスであれば、Object 型との間で変換する事が可能ですが、
ユーザー定義型は、Object 型としては保持できません。
そのため、Object → ユーザー定義型への単純変換は行えません。


もし、メソッドの引数渡しなどの都合上、複数の異なるユーザー定義型を
一つの型でまとめようとしているのであれば、Variant 型の変数を使う事で
実行時バインドする事が可能です。ただしその場合、そのユーザー定義型が
外部公開されている事が条件となります。(たとえユーザー定義型が Public でも、
それが外部に公開されたもので無い場合、Variant 型には格納できません)

編集 削除
うい  2009-06-20 02:16:01  No: 142085  IP: 192.*.*.*

魔界の仮面弁士さん返信ありがとうございます。

Object型を試しに使ったらコンパイルが通ったので
型変換をして何とかソースに組み込めないかとも
考えたのですが、やはり無理やりすぎたので、
型変換しなくていいように、全体的な構成の見直しが
必要だという結論になりました。
(抽象的な話で申し訳ありません)

>ユーザー定義型は、Object 型としては保持できません。
>もし、メソッドの引数渡しなどの都合上、複数の異なるユーザー定義型を
>一つの型でまとめようとしているのであれば、Variant 型の変数を使う事で
>実行時バインドする事が可能です。ただしその場合、そのユーザー定義型が
>外部公開されている事が条件となります。(たとえユーザー定義型が >Public でも、
>それが外部に公開されたもので無い場合、Variant 型には格納できません)

Variant型を使う条件を考えたことがなかったので勉強になりました。
検索にかけているとVariant型とObject型の違いがあがっていました。
http://detail.chiebukuro.yahoo.co.jp/qa/question_detail/q1221362337
今後、わからないことがあればまた質問させていただくかもしれませんが、
よろしくお願い致します。
ありがとうございました。

編集 削除