如何在VB.NET或C#中對別名進行別名,以便在函數中將別名用作參數類型時,意外地使用不別名類型會出錯?在VB.NET中強制實現類型別名
即
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
或者,也許有更好的方法去嗎?
總體來說,我想的IDE逼我知道我在做什麼,如果我扔Ints
周圍意味着Flag
S,或State
S和Strings
周圍意味着Name
S,Property
S和Record
小號。
幫助?
只需將Option Strict On放在源代碼文件的頂部即可。 – 2012-04-06 20:24:04
'Option Strict'防止隱式轉換。這裏沒有轉換髮生,因爲類型是相同的。 – 2012-04-06 20:44:38
Erm,不,整數與字符串不相同。這不是你想要避免的嗎?使用Option Strict Off時,編譯器很樂意生成* try *將字符串轉換爲整數的代碼。在運行時,kaboom無法工作。否則,vb程序員傾向於在語言中喜歡的那種動態類型。把C#看作是一種非常嚴格的語言。 – 2012-04-06 20:57:18