|
Yes Mark, there is an association between them and Grade is child of Student and a Student can have multiple Grades.
Actually I want do it via LINQ query but I couldn't.
Best wishes
|
|
|
|
|
If you can post an example of what you tried then maybe someone here can help fix it
Mark Salsbery
Microsoft MVP - Visual C++
|
|
|
|
|
i think i know there aren't really pointers in c# as such but... if i have a class so:
public class {
int id;
string name; <---- not much data
byte [] data; <---- could be a few mb of data
}
and i need to populate a combobox with name & id values should i simply use the existing class as a combobox item OR should i define a new class just for this scenario?
thnx
"mostly watching the human race is like watching dogs watch tv ... they see the pictures move but the meaning escapes them"
|
|
|
|
|
I don't see anything related to pointers there.
Since you have a reference class with all references, there's really no need to create another class unless you get some gain out of it. What are you thinking the issue is here?
Mark Salsbery
Microsoft MVP - Visual C++
|
|
|
|
|
well ok so i have a List<> of POCO objects that are serialized into json and back for transport over the wire from a web service ... now i don't send the actual data bytes with the list of items just the id and name (the data bytes can be several mb) and request the actual data bytes on demand ... once they are loaded from the server they are stored in memory in the List<>
my main form has a function to get a given document from the List<> ... that causes the doc class to see if the data is there, and if not, go get it and set a flag saying we have it now
then it returns the doc.doc_data which is a byte [] variable
my actual question is this: when i do "return doc.doc_data" does it make a copy of the data on the stack and pass it back, or does it simply return a ptr / ref to that data?
the 1st option would be very bad .... the 2nd is what i hope happens but i don't know how to tell what it is doing
hope that explains it better
"mostly watching the human race is like watching dogs watch tv ... they see the pictures move but the meaning escapes them"
|
|
|
|
|
l a u r e n wrote: my actual question is this: when i do "return doc.doc_data" does it make a copy of the data on the stack and pass it back, or does it simply return a ptr / ref to that data?
Depends on the code in the property/method returning the array... is it making a copy and returning a reference to that copy or just returning a reference to the original data?
Arrays are reference types.
For reference types you need to explicitly make a copy of the data to have two copies. Otherwise a reference refers to the same object, even if you make a copy of the reference.
Pointers are so not relevant here...
Mark Salsbery
Microsoft MVP - Visual C++
|
|
|
|
|
i know pointers aren't really the thing here
i guess i was asking if the function returns a pointer to the data or a copy of the data
that's what i do not quite get in c#
lets say i have a class:
class doc {
int doc_id;
string doc_title;
byte [] doc_data;
public doc()
{
doc_id = 0;
doc_title = string.Empty;
doc_data = null;
}
byte [] getdoc()
{
if (doc_data == null){
doc_data = get_the_data_from_somewhere_over_the_network(id);
}
return doc_data;
}
}
does the getdoc() function return a copy of the data or a ptr to the data?
"mostly watching the human race is like watching dogs watch tv ... they see the pictures move but the meaning escapes them"
|
|
|
|
|
l a u r e n wrote: does the getdoc() function return a copy of the data or a ptr to the data?
It returns a reference to doc_data. No copy is made. The reference "refers" to the same exact data the doc_data field "refers" to.
l a u r e n wrote: i guess i was asking if the function returns a pointer to the data or a copy of the data
that's what i do not quite get in c#
In .NET, this is arguably THE fundamental thing that must be understood, especially if you come from a language like C/C++. Except for simple classes that are defined as value types (which are copied when you do an assignment), most classes are reference types, so any time you pass/return objects of those classes you pass/return references to an object - the SAME object. The implication is that if you alter that object, every other place there's a reference held on that same object is effected.
This MUST be understood... Types (C# Reference)[^]
Mark Salsbery
Microsoft MVP - Visual C++
|
|
|
|
|
thank you so much for the time you took to explain that
much appreciated
"mostly watching the human race is like watching dogs watch tv ... they see the pictures move but the meaning escapes them"
|
|
|
|
|
You're welcome!
Better explained at the link...
Mark Salsbery
Microsoft MVP - Visual C++
|
|
|
|
|
Mark Salsbery wrote: Except for simple classes that are defined as value types
Aka structs?
|
|
|
|
|
|
Ah I forgot enums.. thanks
|
|
|
|
|
Depends on how many objects of your class you'll have/load at a time.
If you have many each of them keeping a few mb of data, not so OK.
A different approach(that I mostly use) is to create separate methods in the "DataLayer" one that loads
only id and name(null or zero sized/empty byte[]). And another one thatn loads the byte[] too, or maybe just the byte[]
for a given ID.
That way a much lower impact on memory and speed too(given that the byte[] can be easily retrieved by using the ID
in the DB if any). In other words load the few mb only when required/needed.
My post/answer utterly assumes that there is a DB somewhere. If not, please ignore it.
All the best,
Dan
|
|
|
|
|
essentially what i'm doing yes
except the database is over the wire and the data is downloaded on demand
my actual question is explained better above
thnx
"mostly watching the human race is like watching dogs watch tv ... they see the pictures move but the meaning escapes them"
|
|
|
|
|
l a u r e n wrote: should i simply use the existing class
Sure, but maybe it needs a ToString method?
|
|
|
|
|
no idea what this means / relates to but thanks for trying to help
"mostly watching the human race is like watching dogs watch tv ... they see the pictures move but the meaning escapes them"
|
|
|
|
|
l a u r e n wrote: there aren't really pointers in c# as such
There are.
|
|
|
|
|
yes i know there *are* pointers in c# but they are not the *preferred* way of writing c# afaik
if i wanted to write my code as i see best i wouldn't use .net for anything but i am trying to do things right
"mostly watching the human race is like watching dogs watch tv ... they see the pictures move but the meaning escapes them"
|
|
|
|
|
Use the existing class.
You can always use pointers in C#. Its called unsafe code.
Too much of heaven can bring you underground
Heaven can always turn around
Too much of heaven, our life is all hell bound
Heaven, the kill that makes no sound
|
|
|
|
|
i have website that send SMS
i need to send any query to this web but i dont want to open the browser
i try this: `System.Diagnostics.Process.Start("IExplore.exe", MyWeb + sbXml.ToString());`
its work excellent - but it open the website in the browser
thanks in advance
|
|
|
|
|
Gali1978 wrote: i need to send any query to this web but i dont want to open the browser
Which is purpose of that?!
I Love T-SQL
"VB.NET is developed with C#.NET"
If my post helps you kindly save my time by voting my post.
www.cacttus.com
|
|
|
|
|
|
thanks for the help,
i have website that send SMS
can i get any sample C# code for how to use HttpWebRequest ?
thanks
|
|
|
|
|