《VB2008从入门到精通(PDF格式英文版)》第197章


…………………………………………………………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
小说推荐
返回首页返回目录