按键盘上方向键 ← 或 → 可快速上下翻页,按键盘上的 Enter 键可回到本书目录页,按键盘上方向键 ↑ 可回到本页顶部!
————未阅读完?加入书签已便下次继续阅读!
…………………………………………………………Page 443……………………………………………………………
CH AP T E R 1 6 ■ L E A R N I N G A B OU T O TH E R V IS U AL B A SI C T E C HN IQ U E S 421
Public ReadOnly Property Real() As Double
Get
Return _real
End Get
Set(ByVal value As Double)
_real = value
End Set
End Property
End Class
plexType is an immutable type that has two data members representing the real and
imaginary number parts。
The goal is to define the + operator so that the following code can be piled。
Dim a As plexType = New plexType(1。0; 10。0)
Dim b As plexType = New plexType(2。0; 20。0)
Dim c As plexType = a + b
Overloading the + operator means to add a method that has a special notation。 The following
is the modified plexType type with the overloaded operator implemented (bolded)。
Public NotInheritable Class plexType
Private ReadOnly _imaginary As Double
Private ReadOnly _real As Double
Public Sub New(ByVal real As Double; ByVal imaginary As Double)
_real = real
_imaginary = imaginary
End Sub
Public Shared Operator +(ByVal a As plexType; ByVal b As plexType) _
As plexType
Return New plexType((a。Real + b。Real); (a。Imaginary + b。Imaginary))
End Operator
Public Overrides Function ToString() As String
Return String。Concat(New Object() {〃(〃; _real; 〃) (〃; _imaginary; 〃)i〃})
End Function
Public ReadOnly Property Imaginary() As Double
Get
Return _imaginary
End Get
End Property
…………………………………………………………Page 444……………………………………………………………
422 CH AP T E R 1 6 ■ L E A R N I N G A B OU T O TH E R V IS U AL B A SI C TE C H N IQ U E S
Public ReadOnly Property Real() As Double
Get
Return _real
End Get
End Property
End Class
The declaration of the overloaded operator is a specially defined function; which follows
these rules:
o The method is always declared as Shared in the context of the type。
o The method has a return type; which should be the type that you want to construct。 In
most cases; it is the type of the declaration (except where a Boolean is required)。
o The method identifier starts with the keyword Operator; followed by a space; and then
the operator being overloaded (+; …; and so on)。
The GoTo Statement
The GoTo statement allows you to jump from one spot in the code to another。 In the past; when
we did not have objects; methods; and other advanced programming constructs; developers
used the GoTo statement because they had no other choice。 Currently; many in the software
industry dislike the GoTo statement。 They think that the GoTo statement is a sign of poor program
ming; and that you never need to use it。 The Channel 9 forum (http://channel9。msdn。/
ShowPost。aspx?PageIndex=1&PostID=14652) has a good discussion on the use of GoTo statements。
In this discussion; a person who was against the GoTo statement said this:
The only possible exception would be if you are doing some sort of puter graphics
app; where I would tolerate a (for y) (for x) nesting; because the inner loop is likely to be
quite simple and the structure makes more sense as an entirety。
So; he would tolerate the GoTo statement in a specific situation; and that means that one
can’t argue that GoTo is all bad。
What I like about how Visual Basic implemented GoTo is that it is designed to solve a partic
ular problem; but not raise the old problems of spaghetti code making a mess of things。 So if
you need to use a GoTo statement; go ahead; just don’t use it excessively。
One example where it is not easily possible to avoid using a GoTo statement is in the
following pseudo…code。
Do While FirstActionLoop()
Do While SecondActionLoop()
If BreakOutOfLoops() Then
GoTo EXIT_ALL
End If
Loop
Loop
EXIT_ALL:
…………………………………………………………Page 445……………………………………………………………
CH AP T E R 1 6 ■ L E A R N I N G A B OU T O TH E R V IS U AL B A SI C T E C HN IQ U E S 423
This code has two loops。 If the code is executing the second loop and decides to end pro
cessing; then exiting the loop bees a bit tricky; as you can break execution only one loop at a
time using the Exit Do statement。 Thus; one solution is to use the GoTo statement; as shown。
The GoTo statement is associated with an identifier that represents a label。 The label can be
placed almost anywhere in the declared method。 An exception is that you can’t place a label in
a Select statement。 However; you can place the label before or after the GoTo keyword。
Generics Constraints
generics have been covered in several chapters。 An additional aspect of generics is
constraints; which can be optionally used to optimize programming。 Constraints limit the types
that the parameter can be。
Three types of constraints are Class; New; and a specific type。 As a general rule; a constraint
is added in the form of an As statement; as follows:
Class Example(Of DataType As {New})
End Class
This example limits DataType to types that have a default constructor。
Using the Type Constraint
Type constraints allow you to associate a minimal ty