Passing Reference Types By Value (ByVal)
Aug 17, 2009
I'm still working on the code in this thread [URL] and as I mentioned in that thread, I thought that passing objects around between methods would probably be bad for performance (perhaps not really noticeably at first but maybe if I did it enough then it could have an impact).
1. When you pass a reference type to a method using ByVal then what is actually 'copied' ? I understand that ByVal copies the object into the local method that you are calling where as ByRef passes a reference to the actual object so you can work with the original object. So when you have a Reference type and you pass this ByVal then does copy the entire object or does it just copy a 'reference' to the object?
2. When working with an object that relates to a 'physical' item, such as a file on disk or a network stream between two connected machines, then what happens when you pass it around between methods (this might be irrelevant depending on the answer to the first question) ? I mean if I have a NetworkStream object that represents the data stream coming from a remote computer, if I then pass that ByVal into another method then does that mean I am still working with the same data stream or a copy of it or what?
View 9 Replies
ADVERTISEMENT
Jun 26, 2009
I know strings are immutable, so the minute you change a string reference's value .NET makes a brand new string on the heap. But what if you don't change the value of a string reference; rather, you simply pass it into a function ByVal -- does this operation copy the string value on the heap as well? My inclination is "no," but I'd like to confirm.
For example:
Public Function IsStringHello(ByVal test As String) As Boolean
Return (String.Compare(test, "Hello") = 0)
End Function
Calling program:
Dim myWord as String = "Blah"
Dim matchesHello as Boolean = IsStringHello(myWord)
I know passing myWord by value makes a copy of the reference to "Blah", but since I have not tried to change the string itself, would it make another copy of the string on the heap?
View 6 Replies
Sep 16, 2010
I have an old unmanaged dll function and I want to pass an array to it.The dll function expects the array to be passed by reference.Sometimes I can do that and sometimes I need to pass a pointer in a variable.Is it possible to override the declare for the function so that I could pass either the array by ref, or a pointer to it if I need to?
View 15 Replies
Jul 23, 2010
I have been working on this for a few days, and I am going around in circles. I can make the program work by including everything in the same sub procedure, but the assignment requires that I do certain tasks by using function procedures.What I need to do is take the contents of a text box, reverse the order of the first and last names, and add them to a list box. I can do that, just not by passing value from a function procedure. Here is my
View 4 Replies
Nov 1, 2009
I have a class with a Property called 'Value' which is of type Object.Value can be of any type, a structure, a class, an array, IList etc.My problem is with the setter and determining whether the value has changed or not.This is simple enough for value types, but reference types and lists present a problem.For a class, would you assume that the Equals method has been implemented correctly, or just assume that the value has changed every time the setter is called?If I did assume it's changed, then perhaps I should assume it for value types as well, so that the behaviour is consistent.
View 2 Replies
Jul 22, 2010
Reading [URL] made me wonder whether the comments in there did apply to Strings in terms of performance. Since strings are copied before being passed, isn't it much more efficient (if the callee doesn't need a copy of string course) to pass strings ByRef?
[Code]...
View 1 Replies
Dec 22, 2010
I have some code that is transforming the coordinates of a line.I want to keep the original coords and I thought passing the line ByVal would be the best way.The original VB6 code used a temporary variable so that the original coords were not updated.I'm confused as when the X & y coords of 'line' are changed 'MyLine' is also changed. I had assumed only 'line' would change and 'MyLine' would remain unchanged'.
Private Sub TransformSaveLine(ByVal MyLine As LineType)
Dim P As Integer
Dim line As LineType
Dim x As Double
[code].....
View 12 Replies
May 31, 2009
have a subroutine which parameter is an array like below:
Private Sub DoubleArrayValues(ByVal arr() As Integer)
Double the values.
[code].....
View 7 Replies
Jan 11, 2012
The difference between reference types and value types is often confusing for beginners due to not understanding what a variable of value type actually holds. We know that:Value types store the actual valueReference types only store the reference to the object
View 4 Replies
Jun 12, 2009
<script runat ="server" >
Dim objDT As New System.Data.DataTable
Dim objDR As System.Data.DataRow
[code]......
View 2 Replies
Mar 2, 2011
So strings are reference types right? My understanding is a reference to the string in the heap is passed even when you pass the string ByVal to a method.
String myTestValue = "NotModified";
TestMethod(myTestValue);
System.Diagnostics.Debug.Write(myTestValue); /* myTestValue = "NotModified" WTF? *[code].....
And what is going on under the hood? I would have bet my life that the value would have changed....
View 5 Replies
Nov 6, 2011
I understand that an array variable contains a reference to an array object - it is a reference type. A string variable is also a reference type.So, if I make a copy of either one, a change to the copy should also change the result I get when I look at the original because both refer to the same object.
View 5 Replies
Mar 2, 2010
I understand that an array variable contains a reference to an array object - it is a reference type. string variable is also a reference type. So, if I make a copy of either one, a change to the copy should also change the result I get when I look at the original because both refer to the same object. In the following code, I expected to see "Whoooy" as the result for original and copy for both the array and the string. It works with the array but not the string.
[Code]...
View 5 Replies
May 30, 2012
I'm integrating one of our apps with a third-party provider's web service. I've added the service reference, but when I go to dimension a var as one of their types, the types aren't showing up for me in Intellisense. I'm using VB.NET/VS 2008 on Windows 7 and a 2.0 Framework web site running on local IIS. I have imported System.Web and System.Web.Service in my codebehind. I also made sure to check the "Always generate message contracts" checkbox.Types not showing up for service reference
View 2 Replies
Oct 29, 2011
Reading a book, the following examples are given regarding value and reference types. This example is noted as a value example. ptY display {x = 10, y = 20}
Dim ptX As New System.Drawing.Point(10, 20)
Dim ptY As New System.Drawing.Point
ptY = ptX
ptX.X = 200
Console.WriteLine(ptY.ToString())
This example is noted as a reference example. objY displays "Hello Test".
Dim objX As New System.Text.StringBuilder("Hello World")
Dim objY As System.Text.StringBuilder
objY = objX
objX.Replace("World", "Test")
Console.WriteLine(objY.ToString())
The idea is simple enough, but I just can not tell the difference between the two. Could someone explain how the heap, the stack and the New keyword play a role in accessing directly and indirectly objects and variables?
View 3 Replies
Jun 10, 2011
Private Sub TextBox1_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TextBox1.TextChanged
Textbox1 how the text box by real-time data monitoring?
View 1 Replies
Jun 10, 2009
Is it okay for a structure variable to hold a small number of reference types? I thinks it's fine because the pointers themselves are not that big, regardless of what they're pointing to. But I never did fully figure out the whole heap/stack thing, so I'd like to make sure.
View 6 Replies
Mar 4, 2012
First post here so Im sorry if im posting in the wrong place. Im trying to build a simple poker game which requires the program to recognise hands of each players. Luckily there are 3rd party solutions such as pokereval. However my problem comes when i try to convert a C# ported version of pokereval by Keith Rule, into vb.net. The following error shows up referring to the line with the *.
[Code]...
View 4 Replies
Jan 5, 2012
I'm making this program that opens the same forder in every pc but it identifies the pc name to do it.
Public Class cv7import Private Sub cv7import_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
[Code]...
but I want it to do it with the pc's name and I'm not sure how the environment.systemdirectory works, or even if it's the right one to use. Is it the right thing to use or is there a better solution.
View 12 Replies
Jul 19, 2011
Let's says I have a class called Customer :-
Code:
Dim Cust as New Customer("Fred")
I also have a function in a seperate class :-
Code:
Shared Function Example(Example As Customer)
How do I refer to the class itself from within itself? For example :-
Code:
' from within the Customer class, call the Example function
AnotherClass.Example(Me??)
View 11 Replies
Oct 20, 2009
passing a variable to a sub procedure by reference. Not sure I understand how it works. Here is the code.
Private Sub bntcompute_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles bntcompute.Click
Dim x, y As Double
getnumbers(x, y)
displaysum(x, y)
[code]....
Is the newly modified variable actually being Passed back? and If so where in the statement is it passed back. is it being passed back to the call getnumbers or is it passed back to the statement displaysum?
View 6 Replies
Apr 30, 2010
Public Class Form1
Public Contestant As New ContestantClass
Public HighScore1 As New ContestantClass
Public HighScore2 As New ContestantClass
Public HighScore3 As New ContestantClass
[Code] .....
The problem I'm having is the first time I take a value, it gets inserted in the right section. The second time I insert a value, it inserts it in the correct place AND updates the previous value I inserted with the new value. So apparently when I'm doing:
HighScore1 = Contestant
It's pointing contestant AT highscore1 rather than taking the name, company, and score from contestant and then storing it in highscore1. How I can pass that info by value rather than by reference?
View 3 Replies
Sep 23, 2008
The case is that I have two comboboxes (country and state) and a simple code to populate the state combobox accordingly depending on the selected country. Ok this is simple and easy, and this code is within the country combo change event.The case is that I have more than one pairs of those comboboxes and I wouldnt like to repeat all the populate code into every country combo change event.Actually I would like to have only one function and just call it passing as parameter a reference to the combobox I want to populate. Then I could use that reference into the function.
View 10 Replies
Jun 6, 2011
I have a function that accepts a String by reference:Function Foo(ByRef input As String)
If I call it like this:
Foo(Nothing)
I want it to do something different than if I call it like this:Dim myString As String = Nothing Foo(myString) Is it possible to detect this difference in the way the method is called in VB .NET?All the logic is in the second overload, but I want to perform a different branch of logic if Nothing was passed into the function than if a variable containing Nothing was passed in.
View 3 Replies
Aug 11, 2009
Is it really impossible to create an extension method in C# where the instance is passed as a reference?
Heres a sample VB.NET console app:
Imports System.Runtime.CompilerServices
Module Module1
[code].....
View 3 Replies
Oct 21, 2009
I have a List(Of AddlInfo) with AddlInfo being an object. I'm trying to pass addlInfoList by reference into a function of another class:
[Code]...
This works if I'm not passing the reference into another class, but when I try to do this, I get the following error: Overload resolution failed because no accessible 'Sort' can be called with these arguments:
[Code]...
View 1 Replies
Jan 25, 2011
Just as a secondary question, usually I reduce: -(ByVal sender As System.Object, ByVal e As System.EventArgs) to just () for most occurrences of auto-generated subroutines. Is there any harm in doing this? I cant see any reduction in performance but do get more readability.
View 8 Replies
Apr 26, 2010
I'm having a problem with passing on values from my data grid view to a textbox located in another form.[code]
View 2 Replies
Jun 23, 2012
I need to compare two dictionary values if the types stored are equal, this is what i have
if gettype(Args(key)) = gettype(argtypes(key)) then
'' do something
end if
[Code]....
View 1 Replies
Jun 14, 2010
As I understand it, C# passes parameters into methods by reference. In vb.net, you can specify this with ByVal and ByRef. The default is ByVal.
Is this for compatibility with vb6, or is it just random? Also, how can I specify what to use in C#? I kind of like the idea of passing parameters by value.
View 3 Replies