11

Visual Basic 6のVB.NETのCTypeに相当するキャスト式は何ですか?

4

6 に答える 6

19

あなたがキャストしているタイプに応じてそれらの数があります

cint() Cast to integer
cstr() cast to string
clng() cast to long
cdbl() cast to double
cdate() cast to date

また、暗黙のキャストがあるため、これを実行できますmyString = myInt

于 2008-11-20T21:42:10.207 に答える
18

かなりの数の投稿者が質問を誤解しているように見えるので、質問を言い換えて、これまでに与えられた正しい答えを要約することで、問題を解決しようとします.

問題

ある型のデータを別の型にキャストしたい。私の VB.NET コードでは、CTypeこれを行うために使用します。ただし、CTypeVB6 で使用しようとすると、「サブまたは関数が定義されていません」というエラーが表示されます。では、動作しない場合、どのように VB6 でキャストを実行できCTypeますか?

解決

お気づきかもしれませんが、VB6 にはCTypeVB.NET のような機能がありません。ただし、CInt や CStr など、VB.NET コードで遭遇する可能性のある他の変換関数 (名前が で始まるものC) は VB6 に存在し、それらを使用して非オブジェクトとの間で変換できます。種類。あるクラスのオブジェクトを別のクラスのオブジェクトに変換する組み込み関数はありません。VB.NET とは異なり、VB6 は継承をサポートしていないことに注意してください。VB6 のクラスは 1 つ以上のインターフェイスを実装できますが、別のクラスから継承することはできません。ただし、オブジェクトのクラスが複数のインターフェースを実装している場合は、Setステートメントを使用して、オブジェクトをサポートするインターフェースの 1 つにキャストすることができます (Ant が提案したように)。Ant のコード例の拡張バージョンを以下に示します。

例: サポートされているインターフェースのいずれかにクラスをキャストする

Dim base As BaseClass
Dim child As ChildClass     'implements BaseClass'

Set child = New ChildClass 
Set base = child            '"Cast" child to BaseClass'


VB6 の組み込み型変換関数

以下は、VB6 ヘルプ ファイルから直接取得した、VB6 で使用可能な組み込み変換関数の完全なリストです。


Cブール

戻り値

Boolean

説明

をブール値に変換します。

の引数の範囲:

有効な文字列または数値式。


Cバイト

戻り値

Byte

説明

をバイトに変換します。

の引数の範囲:

0 ~ 255。


CCur

戻り値

Currency

説明

を通貨に変換します。

の引数の範囲:

-922,337,203,685,477.5808 から 922,337,203,685,477.5807.


日付

戻り値

Date

説明

を日付に変換します。

の引数の範囲:

有効な日付式。


CDbl

戻り値

Double

説明

を Double に変換します。

の引数の範囲:

負の値の場合は -1.79769313486232E308 ~ -4.94065645841247E-324。正の値の場合、4.94065645841247E-324 から 1.79769313486232E308。


CDec

戻り値

Decimal

説明

を Decimal に変換します。

の引数の範囲:

+/-79,228,162,514,264,337,593,543,950,335 ゼロ スケールの数値、つまり小数点以下の桁数がない数値の場合。小数点以下 28 桁の数値の場合、範囲は +/-7.9228162514264337593543950335 です。最小のゼロ以外の数値は 0.000000000000000000000000001 です。


CInt

戻り値

Integer

説明

を Long に変換します。

の引数の範囲:

-32,768 ~ 32,767; 分数は丸めます。


CLng

戻り値

Long

説明

を Long に変換します。

の引数の範囲:

-2,147,483,648 ~ 2,147,483,647; 分数は丸めます。


CSng

戻り値

Single

説明

を Single に変換します。

の引数の範囲:

負の値の場合は -3.402823E38 ~ -1.401298E-45。正の値の場合は 1.401298E-45 ~ 3.402823E38。


CStr

戻り値

String

説明

を文字列に変換します。

の引数の範囲:

CStr の戻り値は、式の引数によって異なります。


CVar

戻り値

Variant

説明

をバリアントに変換します。

の引数の範囲:

数値の Double と同じ範囲。数値以外の文字列と同じ範囲。

于 2008-11-22T05:23:29.903 に答える
5

BaseClass にキャストしたい ChildClass (子) のオブジェクトがあるとします。これをして:

Dim base As BaseClass
Set base = child

VB6 がコンパイル時のタイプ セーフを処理する方法により、追加の構文を使用せずにそれを行うことができます。

注:他の誰もが言及しているように見えることを考えるとCType、私は質問を完全に誤解している可能性があります。その場合は申し訳ありません!

于 2008-11-21T12:48:41.313 に答える
2

既に述べたキャストは正しいですが、タイプがオブジェクトの場合、次のように VB6 で "Set" を使用する必要があります。

If IsObject(Value) Then
    Set myObject = Value ' VB6 does not have CType(Value, MyObjectType)
Else
    myObject = Value     ' VB6 does not have CType(Value, MyObjectType)
End If

もちろん、それはキャスト先のタイプによって異なります。ほとんどすべてのユーザー クラスは、Collection、Dictionary などと同様にオブジェクトです。long、integer、boolean などの組み込み型は、明らかにオブジェクトではありません。

于 2008-11-20T22:32:54.113 に答える
0

Ctype()私は信じています。C *(CDate()、CStr()など)は、ほとんどの場合、ホールドオーバーです。

于 2008-11-20T21:40:44.220 に答える
0

変換は「キャスト」ではありません。たとえば、次を試してください。

MsgBox CLng(CBool(3&))

結果は 3 ではなく -1 です。これは、これらがキャストではなく変換関数であるためです。語学は大事!

于 2009-01-20T06:10:35.360 に答える