Re: Function Declaration
- From: "Scott M." <s-mar@xxxxxxxxxxxxx>
- Date: Thu, 23 Jun 2005 21:43:55 -0400
Structures are Value Types. If you pass a Value Type ByVal, you get a copy
of the structure. Changes to the passed structure do not affect the
original structure.
"Dennis" <Dennis@xxxxxxxxxxxxxxxxxxxxxxxxx> wrote in message
news:30779613-D99E-4EEB-938E-777319F0666B@xxxxxxxxxxxxxxxx
> If I pass a structure byval that contains both reference and value types,
> what exactly am I passing and if I change a structure field in my
> function,
> is the structure field in the calling procedure changed also?
> --
> Dennis in Houston
>
>
> "Jay B. Harlow [MVP - Outlook]" wrote:
>
>> Mike,
>> In addition to the other comments.
>>
>> I would define the function as:
>>
>> | Public Function CleanSomething(ByVal value As String) As String
>>
>> To help ensure the "fastest" possible function! Remember that ByVal &
>> ByRef
>> refer to how parameters are passed, while Reference Type & Value Type
>> refer
>> to how values are stored.
>>
>> ByVal passes a copy of the variable as the parameter.
>> ByRef passes a reference to the variable as the parameter.
>>
>> Reference Types exist on the heap, a variable holds a reference to the
>> actual object on the heap.
>> Value Types exist on the stack or nested inside another object, a
>> variable
>> holds the actual value.
>>
>>
>> String is a Reference type, which means that a String variable or
>> parameter
>> holds a reference to the actual string object on the Heap. If you pass a
>> String ByRef to a routine, you are passing a reference to the variable
>> that
>> holds a reference to the actual string object on the heap. In other words
>> a
>> reference to a reference to an object. If you pass a String ByVal you
>> passing the reference itself. In other words a reference to an object.
>>
>> I would expect ByRef String to be slightly slower as you are
>> dereferencing a
>> reference each time you want to access the String's value.
>>
>> When you define your function "As String" you are receiving a copy of the
>> reference to the actual string object on the heap. There is only one
>> instance of the String on the heap.
>>
>> Hope this helps
>> Jay
>>
>> "Mike Labosh" <mlabosh@xxxxxxxxxxx> wrote in message
>> news:uHx7kbDeFHA.228@xxxxxxxxxxxxxxxxxxxxxxx
>> | >I would first suggest that you use a StringBuilder, rather than
>> Strings
>> for
>> | >heavy string manipulation.
>> |
>> | Actually, most of the stuff uses Regex's. But I do use StringBuilder
>> where
>> | I can. StringBuilder let me do one of our export batches in half the
>> time
>> | it used to take :):):)
>> |
>> | > Second, what is your function returning? If it returns a Reference
>> Type,
>> | > then you are only getting a copy of the pointer to the reference
>> type,
>> not
>> | > a copy of the reference type itself.
>> |
>> | Pretty much all the method prototypes in this class look like this:
>> |
>> | Public Function CleanSomething(ByRef value As String) As String
>> |
>> | There is one method that returns a Structure, also.
>> |
>> | I just want to make sure I'm returning the return value ByRef for
>> greater
>> | speed / efficiency.
>> |
>> | --
>> | Peace & happy computing,
>> |
>> | Mike Labosh, MCSD
>> |
>> | "Mr. McKittrick, after very careful consideration, I have
>> | come to the conclusion that this new system SUCKS."
>> | -- General Barringer, "War Games"
>> |
>> |
>>
>>
>>
.
- References:
- Function Declaration
- From: Mike Labosh
- Re: Function Declaration
- From: Scott M.
- Re: Function Declaration
- From: Mike Labosh
- Re: Function Declaration
- From: Jay B. Harlow [MVP - Outlook]
- Re: Function Declaration
- From: Dennis
- Function Declaration
- Prev by Date: Re: Connection string for Piped Delimiter CSV
- Next by Date: console app Q
- Previous by thread: Re: Function Declaration
- Next by thread: Re: Function Declaration
- Index(es):
Relevant Pages
|
Loading