2

VB.NET や C# で型のエイリアスを作成するにはどうすればよいでしょうか? エイリアスが関数の引数の型として使用されている場合、誤ってエイリアス化されていない型を使用するとエラーになりますか?

すなわち

Imports AccessSpecifier = System.String

Module Accessors
    Delegate Function IoOper(ByRef strm As System.IO.Stream) As Action
    Public Function accessMethod(ByRef spec As AccessSpecifier) As IoOper
        ' implementation
        ' ...
    End Function
End Module

Module Main
    Public Sub Main()
        Dim spec As AccessSpecifier = New AccessSpecifier(CType("READ_WRITE", Char()))
        Dim val = Accessors.accessMethod(spec)
        System.Console.WriteLine(val.GetType())
        Dim shouldFail = Accessors.accessMethod("FAIL_ME")
        System.Console.WriteLine(shouldFail.GetType())
    End Sub
End Module

それとも、これについてもっと良い方法がありますか?

全体として、私がs を意味するために投げ回している場合、またはs とs、s およびsを意味するためIntsに周りを投げている場合、IDE に自分が何をしているのかを強制的に認識させたいと考えています。FlagStateStringsNamePropertyRecord

ヘルプ?

4

1 に答える 1

3

私は .NET での Type エイリアシングが好きではありませんでした。コードが不正確になり、何が起こっているのかすぐにはわかりません。あなたの例のように、個人が AccessSpecifier.vb ファイル (またはクラス) を探しに行ったとき、彼らはそれを見つけられませんでした。

また、エイリアシングは、YOUR プロジェクト内および単一のコード ファイル内でのみ機能します。したがって、エイリアスが使用されるすべてのさまざまなコード ファイルでそのエイリアスを定義する必要があります。

より良い (読みやすく、保守しやすく、意図がより明確な) オプションは、クラスを作成し、文字列との間の自動変換のために型変換演算子をオーバーロードすることです。この方法では、新しいクラスを String であるかのように使用できますが、厳密な型チェックを行うことができます。

于 2012-04-06T23:17:59.297 に答える