Hello,
I have been working with an application that sends a dataset to other forms
that are called from individual DLL's.
I have noticed that, a dataset that is passed to another form, when changed,
changes the dataset in all of the forms.
But, if you send a string to the other forms, that the value is independant
on each form.. I.E.
Called Form from a DLL:
Dim ADataset As New DataSet()
Dim FormNumber As String
Public Property RefDataset() As DataSet
Get
Return RefDataset
End Get
Set(ByVal Value As DataSet)
ADataset = Value
End Set
End Property
Public Property WhatForm() As String
Get
Return WhatForm
End Get
Set(ByVal Value As String)
FormNumber = Value
End Set
End Property
If I change the data inside the 'ADataset' the Main App's and the called
form's datasets change together (all of them) which is good and fine for
what I need it for.
But if I change the FormNumber only the called form's FormNumber Changes and
not all of them.
Is this normal? Does this have something to do with how datasets are
created that makes it work for a Dataset and Not other values?
Any suggestions will be greatly appreciated,
Thank,
Chuck 10 1376
Although string is a reference type, .NET has already included handling on
it so its function will be that of a value type.
Passing a reference type (like a dataset) by value is just passing a pointer
to a particular object in memory. You cannot change the object dataset it
is pointing to yet you can change its contents. In your case, when the
contents are changed in the dataset, and it was being passed by value, the
changes will be committed to the dataset object in memory.
For the case of the string, each project will have their own copies of the
string since it behaves like a value type. Btw, does VB.NET still support
the old function name value?
Public Property RefDataset() As DataSet
Get
Return RefDataset
End Get
Set(ByVal Value As DataSet)
ADataset = Value
End Set
End Property
The new way for the get property should return the private variable
Public Property RefDataset() As DataSet
Get
Return ADataset ***
End Get
Set(ByVal Value As DataSet)
ADataset = Value
End Set
End Property
"Charles A. Lackman" <Ch*****@CreateItSoftware.net> wrote in message
news:em**************@TK2MSFTNGP09.phx.gbl... Hello,
I have been working with an application that sends a dataset to other
forms that are called from individual DLL's.
I have noticed that, a dataset that is passed to another form, when
changed, changes the dataset in all of the forms. But, if you send a string to the other forms, that the value is
independant on each form.. I.E.
Called Form from a DLL:
Dim ADataset As New DataSet() Dim FormNumber As String
Public Property RefDataset() As DataSet Get Return RefDataset End Get Set(ByVal Value As DataSet) ADataset = Value End Set End Property
Public Property WhatForm() As String Get Return WhatForm End Get Set(ByVal Value As String) FormNumber = Value End Set End Property
If I change the data inside the 'ADataset' the Main App's and the called form's datasets change together (all of them) which is good and fine for what I need it for. But if I change the FormNumber only the called form's FormNumber Changes
and not all of them. Is this normal? Does this have something to do with how datasets are created that makes it work for a Dataset and Not other values?
Any suggestions will be greatly appreciated,
Thank, Chuck
For the case of the string, if you want it to have a global effect, pass it
by reference
"Joey Callisay" <hc******@codex-systems.com> wrote in message
news:OJ**************@TK2MSFTNGP10.phx.gbl... Although string is a reference type, .NET has already included handling on it so its function will be that of a value type.
Passing a reference type (like a dataset) by value is just passing a
pointer to a particular object in memory. You cannot change the object dataset it is pointing to yet you can change its contents. In your case, when the contents are changed in the dataset, and it was being passed by value, the changes will be committed to the dataset object in memory.
For the case of the string, each project will have their own copies of the string since it behaves like a value type. Btw, does VB.NET still support the old function name value?
Public Property RefDataset() As DataSet Get Return RefDataset End Get Set(ByVal Value As DataSet) ADataset = Value End Set End Property
The new way for the get property should return the private variable
Public Property RefDataset() As DataSet Get Return ADataset *** End Get Set(ByVal Value As DataSet) ADataset = Value End Set End Property
"Charles A. Lackman" <Ch*****@CreateItSoftware.net> wrote in message news:em**************@TK2MSFTNGP09.phx.gbl... Hello,
I have been working with an application that sends a dataset to other forms that are called from individual DLL's.
I have noticed that, a dataset that is passed to another form, when changed, changes the dataset in all of the forms. But, if you send a string to the other forms, that the value is independant on each form.. I.E.
Called Form from a DLL:
Dim ADataset As New DataSet() Dim FormNumber As String
Public Property RefDataset() As DataSet Get Return RefDataset End Get Set(ByVal Value As DataSet) ADataset = Value End Set End Property
Public Property WhatForm() As String Get Return WhatForm End Get Set(ByVal Value As String) FormNumber = Value End Set End Property
If I change the data inside the 'ADataset' the Main App's and the called form's datasets change together (all of them) which is good and fine for what I need it for. But if I change the FormNumber only the called form's FormNumber Changes and not all of them. Is this normal? Does this have something to do with how datasets are created that makes it work for a Dataset and Not other values?
Any suggestions will be greatly appreciated,
Thank, Chuck
Joey Callisay <hc******@codex-systems.com> wrote: Although string is a reference type, .NET has already included handling on it so its function will be that of a value type.
Not really. There's nothing special about string here. It's just an
immutable object, like any other immutable object one could design.
There *are* ways in which the CLR treats strings in a special manner,
but this isn't one of them.
--
Jon Skeet - <sk***@pobox.com> http://www.pobox.com/~skeet
If replying to the group, please do not mail me too
Charles A. Lackman <Ch*****@CreateItSoftware.net> wrote: I have been working with an application that sends a dataset to other forms that are called from individual DLL's.
I have noticed that, a dataset that is passed to another form, when changed, changes the dataset in all of the forms. But, if you send a string to the other forms, that the value is independant on each form.. I.E.
<snip>
See http://www.pobox.com/~skeet/csharp/parameters.html
(It's C# based, but applies to VB.NET as well.)
--
Jon Skeet - <sk***@pobox.com> http://www.pobox.com/~skeet
If replying to the group, please do not mail me too
Jon, Although string is a reference type, .NET has already included handling
on it so its function will be that of a value type.
Not really. There's nothing special about string here. It's just an immutable object, like any other immutable object one could design.
There *are* ways in which the CLR treats strings in a special manner, but this isn't one of them.
What do I miss?
In my opinion is the reason is from the behaviour is that the string is
passed by its value of the pointer to its starting adres and by a change get
a new pointer.
While the dataset keeps its own pointer
Your answer is therefore not wrong, however I would not completly answer it
like you do. There is something special to the string, it is immutable and
therefore it gets evertime a new pointer.
As we disscussed before not all systems have immutable strings, so you may
call this something "special" from Net. (And let us not discuss about the
word special, maybe is not immutable at the moment "special").
Correct me when I am "completly" wrong?
Cor
But passing a string by value and changing the value of that string on the
receiving method will not change the original string.
Unlike passing the dataset by value, isn't it Mr. Skeet?
"Jon Skeet [C# MVP]" <sk***@pobox.com> wrote in message
news:MP************************@msnews.microsoft.c om... Joey Callisay <hc******@codex-systems.com> wrote: Although string is a reference type, .NET has already included handling
on it so its function will be that of a value type.
Not really. There's nothing special about string here. It's just an immutable object, like any other immutable object one could design.
There *are* ways in which the CLR treats strings in a special manner, but this isn't one of them.
-- Jon Skeet - <sk***@pobox.com> http://www.pobox.com/~skeet If replying to the group, please do not mail me too
Cor Ligthert <no**********@planet.nl> wrote: Not really. There's nothing special about string here. It's just an immutable object, like any other immutable object one could design.
There *are* ways in which the CLR treats strings in a special manner, but this isn't one of them. What do I miss?
In my opinion is the reason is from the behaviour is that the string is passed by its value of the pointer to its starting adres and by a change get a new pointer.
While the dataset keeps its own pointer
No, DataSet doesn't "keep its own pointer". In both cases, they're just
reference types. You can't change the contents of a string, you can
change the contents of a DataSet. In both cases, changing the value of
a variable won't change the object though. In other words:
DataSet x = GetSomeDataSet();
x = GetSomeOtherDataSet();
doesn't change either DataSet - it just changes the value of x from a
reference to one DataSet to a reference to another DataSet.
Your answer is therefore not wrong, however I would not completly answer it like you do. There is something special to the string, it is immutable and therefore it gets evertime a new pointer.
But being immutable has nothing to do with the CLR. You can write your
own immutable classes which behave exactly the same way.
As we disscussed before not all systems have immutable strings, so you may call this something "special" from Net. (And let us not discuss about the word special, maybe is not immutable at the moment "special").
Correct me when I am "completly" wrong?
What's wrong is the impression that strings are handled differently to
other types in this respect. They're not at all. String is a reference
type which happens to be immutable. The immutability just means there
isn't any way to change the contents of the object, but that doesn't
mean the CLR handles it differently or anything like that. (Not in this
respect, anyway - interning etc is a different matter.)
--
Jon Skeet - <sk***@pobox.com> http://www.pobox.com/~skeet
If replying to the group, please do not mail me too
Joey Callisay <hc******@codex-systems.com> wrote: But passing a string by value and changing the value of that string on the receiving method will not change the original string. Unlike passing the dataset by value, isn't it Mr. Skeet?
No, because you *can't* change the "value of that string". Note that
there's a big difference between changing the data within an object and
changing the value of a reference type variable. For instance, these
two methods are similar:
public void TryToChangeString (string x)
{
x = "hello";
}
public void TryToChangeDataSet (DataSet ds)
{
ds = new DataSet();
}
These two methods *aren't* similar:
public void TryToChangeString2 (string x)
{
x = "hello";
}
public void TryToChangeDataSet2 (DataSet ds)
{
ds.AcceptChanges();
}
The important thing to realise is that you never actually pass a
DataSet or a string, either by reference or by value - you pass a
*reference* to a DataSet or a string, and you can pass that reference
by reference or by value.
There's nothing special going on here - it's just the way reference
types work, and it's the same for both String and DataSet - the only
difference is that there happens to be no way of changing the contents
of a String. That's not .NET "including handling" of String in a
special way - you can write your own types which behave exactly the
same way, just by not providing any members which can change the data
in the object.
--
Jon Skeet - <sk***@pobox.com> http://www.pobox.com/~skeet
If replying to the group, please do not mail me too
It's very interesting to have guys like you here. Good thing I posted my
views here so I got my notions corrected especially with the Immutability of
Strings (be it special or not, :p).
Thanks a lot guys.
"Jon Skeet [C# MVP]" <sk***@pobox.com> wrote in message
news:MP************************@msnews.microsoft.c om... Cor Ligthert <no**********@planet.nl> wrote: Not really. There's nothing special about string here. It's just an immutable object, like any other immutable object one could design.
There *are* ways in which the CLR treats strings in a special manner, but this isn't one of them.
What do I miss?
In my opinion is the reason is from the behaviour is that the string is passed by its value of the pointer to its starting adres and by a change
get a new pointer.
While the dataset keeps its own pointer
No, DataSet doesn't "keep its own pointer". In both cases, they're just reference types. You can't change the contents of a string, you can change the contents of a DataSet. In both cases, changing the value of a variable won't change the object though. In other words:
DataSet x = GetSomeDataSet(); x = GetSomeOtherDataSet();
doesn't change either DataSet - it just changes the value of x from a reference to one DataSet to a reference to another DataSet.
Your answer is therefore not wrong, however I would not completly answer
it like you do. There is something special to the string, it is immutable
and therefore it gets evertime a new pointer.
But being immutable has nothing to do with the CLR. You can write your own immutable classes which behave exactly the same way.
As we disscussed before not all systems have immutable strings, so you
may call this something "special" from Net. (And let us not discuss about
the word special, maybe is not immutable at the moment "special").
Correct me when I am "completly" wrong?
What's wrong is the impression that strings are handled differently to other types in this respect. They're not at all. String is a reference type which happens to be immutable. The immutability just means there isn't any way to change the contents of the object, but that doesn't mean the CLR handles it differently or anything like that. (Not in this respect, anyway - interning etc is a different matter.)
-- Jon Skeet - <sk***@pobox.com> http://www.pobox.com/~skeet If replying to the group, please do not mail me too
Thank You Everyone for you help!!
Chuck
"Jon Skeet [C# MVP]" <sk***@pobox.com> wrote in message
news:MP************************@msnews.microsoft.c om... Charles A. Lackman <Ch*****@CreateItSoftware.net> wrote: I have been working with an application that sends a dataset to other
forms that are called from individual DLL's.
I have noticed that, a dataset that is passed to another form, when
changed, changes the dataset in all of the forms. But, if you send a string to the other forms, that the value is
independant on each form.. I.E.
<snip>
See http://www.pobox.com/~skeet/csharp/parameters.html
(It's C# based, but applies to VB.NET as well.)
-- Jon Skeet - <sk***@pobox.com> http://www.pobox.com/~skeet If replying to the group, please do not mail me too This thread has been closed and replies have been disabled. Please start a new discussion. Similar topics
by: cody |
last post by:
I've seen an Introduction on ADO.NET with its Datasets on .NET TV and Iam
now wondering how it is realized/used in real world applications.
I don't believe that one would create a dataset and add...
|
by: Andrew |
last post by:
I'm a long time VB6/ADO and Java developer new to ADO.NET. I'm trying
to decide on best practices and I'd appreciate any assistance. I have
one specific question and another more general...
|
by: Frédéric Mayot |
last post by:
Hi,
In my web application, I need object-relational mapping. I would have liked
to take advantage of the datasets while keeping encapsulation of the data. I
thought about having a protected...
|
by: Ernie Josefik |
last post by:
1. I am using a typed dataset which is being filled from
an Oracle database. If any of the columns contain a null
value I get an error when accessing the column
e.g. ...
|
by: Mike |
last post by:
I'm working on an application that will add, update, and
delete movies.
I'm able to update or delete multiple records from the
dataset and then successfully update the "Movie" table.
However I...
|
by: Charles A. Lackman |
last post by:
Hello,
I have been working with an application that sends a dataset to other forms
that are called from individual DLL's.
I have noticed that, a dataset that is passed to another form, when...
|
by: Peter Bradley |
last post by:
Hi all,
This post is sort of tangentially related to my earlier posts on
configuration files for DLLs.
Does anyone know how to create typed DataSets using VS2005's new DataSet
designer, but...
|
by: Ronald S. Cook |
last post by:
We're designing an app and see two basic ways to return data from the
business tier to the client:
1) Everything in DataSets
2) Fill properties of objects and manage accordingly
Any opinions...
|
by: gardnern |
last post by:
We have X number of data sets, of Y length each.
For example...
Small, Medium, Large
and
Red, Green, Blue, Yellow
We need to generate a list of all possibilities
Small Red
|
by: taylorcarr |
last post by:
A Canon printer is a smart device known for being advanced, efficient, and reliable. It is designed for home, office, and hybrid workspace use and can also be used for a variety of purposes. However,...
|
by: aa123db |
last post by:
Variable and constants
Use var or let for variables and const fror constants.
Var foo ='bar';
Let foo ='bar';const baz ='bar';
Functions
function $name$ ($parameters$) {
}
...
|
by: ryjfgjl |
last post by:
If we have dozens or hundreds of excel to import into the database, if we use the excel import function provided by database editors such as navicat, it will be extremely tedious and time-consuming...
|
by: ryjfgjl |
last post by:
In our work, we often receive Excel tables with data in the same format. If we want to analyze these data, it can be difficult to analyze them because the data is spread across multiple Excel files...
|
by: emmanuelkatto |
last post by:
Hi All, I am Emmanuel katto from Uganda. I want to ask what challenges you've faced while migrating a website to cloud.
Please let me know.
Thanks!
Emmanuel
|
by: nemocccc |
last post by:
hello, everyone, I want to develop a software for my android phone for daily needs, any suggestions?
|
by: Sonnysonu |
last post by:
This is the data of csv file
1 2 3
1 2 3
1 2 3
1 2 3
2 3
2 3
3
the lengths should be different i have to store the data by column-wise with in the specific length.
suppose the i have to...
|
by: Oralloy |
last post by:
Hello folks,
I am unable to find appropriate documentation on the type promotion of bit-fields when using the generalised comparison operator "<=>".
The problem is that using the GNU compilers,...
|
by: jinu1996 |
last post by:
In today's digital age, having a compelling online presence is paramount for businesses aiming to thrive in a competitive landscape. At the heart of this digital strategy lies an intricately woven...
| |