|
Hi everyone,I'm a newbie of C# and I want to ask the meaning of the line in a sample code.
Here is the code,
namespace HashExample {
// A library contains a list of books.
class Library {
public Hashtable bookList;
public Library() {
bookList = new Hashtable();
}
}
// Books are placed in the library
class Book {
public Book( string t, int n) {
Title = t; ISBN = n;
}
public string Title;
public int ISBN;
}
class ClassMain {
static void Main(string[] args) {
Book b1 = new Book("Programming Microsoft Windows with C#", 0735613702 );
Book b2 = new Book("Inside C#", 0735612889 );
Library myReferences = new Library();
myReferences.bookList.Add(b1.ISBN, b1);
myReferences.bookList.Add(b2.ISBN, b2);
Book b = (Book) myReferences.bookList[0735612889];
Console.WriteLine( b.Title );
Console.WriteLine("\nPress Enter to quit");
Console.ReadLine();
}
}
}
I understood the hash tables.However this line doesn't make any sense on me
Book b = (Book) myReferences.bookList[0735612889];
What is the function of "(Book)" here?What does this mean?
Kind Regards,
-
kromozom
-
|
|
|
|
|
kromozom wrote:
What is the function of "(Book)" here?
Every Book is an Object, since by design in .NET all classes derive explicitly or implicitly from the Object class.
But not every Object is a Book, hence the need to cast.
That said, casting is mostly unsafe, and may produce an exception at run-time.
The best way to avoid casting is to either derive a specialization of HashTable (like the specialized string arrays derive from ArrayList), or use generics when it's supported (.NET 2.0 release).
|
|
|
|
|
Thanks for kind and fast reply .S.Rod.
I understood some parts of you have written in your reply. However there are some uncertain parts in my mind, could you give me more explanation about this or a web adress that I can find info about this.
I mean why --> Book b = (Book) myReferences.bookList[0735612889];
and what's wrong with this --> Book b = myReferences.bookList[0735612889];
Thanks again,
-
kromozom@msn.com for MSN messenger
-
|
|
|
|
|
When retrieving a value from a Hashtable you are given a System.Object as the return type, so it always needs to be cast to the Object type you need. A Hashtable works by boxing your values when added, and it's up to you to un-box them when retreiving them.
In your case you need to cast it to a Book object, however if it were string values in your Hashtable you would need to cast it to a System.String object, if it were double values you would need to cast it to double, and so on and so forth..
|
|
|
|
|
Thanks a lot Furty.
I understood this is because un-boxing and .Net wants to know which type we want to un-box it.
Thanks again.
-
kromozom
-
|
|
|
|
|
is it possible to get a "text" in a listbox from a mouse point.. im trying to make it so when the user hovers the mouse over a item in the list box that item becomes selected. Is it possible to do this ?
Thanks Alot.
Jesse M
The Code Project Is Your Friend...
|
|
|
|
|
jtmtv18 wrote:
is it possible to get a "text" in a listbox from a mouse point.. im trying to make it so when the user hovers the mouse over a item in the list box that item becomes selected. Is it possible to do this ?
public class ListBoxEx : ListBox
{
protected override void OnMouseHover(EventArgs e)
{
SelectedIndex = IndexFromPoint(PointToClient(MousePosition));
base.OnMouseHover(e);
}
}
That should do it
MyDUMeter: a .NET DUMeter clone "Thats like saying "hahahaha he doesnt know the difference between a cyberneticradioactivenuclothermolopticdimswitch and a biocontainingspherogramotron", but with words you have really never heard of."
|
|
|
|
|
thanks alot leppy... i needed to do a lil work to get it to work...but the direction you gave was Dead On...thanks alot.
Jesse M
The Code Project Is Your Friend...
|
|
|
|
|
Hi, all!
Would you like to help me, plz?
Have the folow:
I want to create COM+ component with help c#, so, it will use the external(usual) dll-file(my.dll), where contents some logic (com-objects).
This dll good work in usual application, when add it as reference - all ok.
(a have not source for this dll file)
But when i try to link up it in my developed com+ app., - got folow answer from compiler:
"Assembly generation failed -- Referenced assembly 'name of my.dll' does not have a strong name"
is it have not 'strong name'????
i try the next:
al /out:my.dll "?" /keyfile:my_dll.snk
but it don't want to work... i do not understand want is this "?"
and is it right way to solve this problem? and what i must do in this case?
in any case thx.
|
|
|
|
|
Can someone point me in the right direction in creating translucent MenuItems?
I'd rather not get into a debate about why its not advisable, suffice it to say I have a unique tool that really would benefit from it.
I have tried creating a class that derives from MenuItem and overriding OnDrawItem, and then using the Handle to call several Win32 functions that set the window layered property and alpha, but it doesn't seem to work.
I admit I'm a bit lost because I'm not very familiar with Windows Forms.
Thanks so much,
Mattingly
|
|
|
|
|
Ok, I have created a form with nothing on it but a tab page with a single tab, that is marked to anchor to all sides ("top/left/right/bottom"). I then run the app, and size it back and forth, noticing a huge amount of flicker on the label for the single tab page. Additionally, anything I put on the tab page that sizes with it (ie, a Web browser control, a Rich edit box, etc) all flicker terribly as well when sizing.
I've seen other apps that manage to size tab controls without excessive flicker, what do I need to do to eliminate this flicker under C#/.net?
Thanks,
Saren
|
|
|
|
|
SetStyle(ControlStyles.DoubleBuffer, true);
SetStyle(ControlStyles.AllPaintingInWmPaint, true);
in your contructor mite help, also try not to invalidate the form too much.
MyDUMeter: a .NET DUMeter clone "Thats like saying "hahahaha he doesnt know the difference between a cyberneticradioactivenuclothermolopticdimswitch and a biocontainingspherogramotron", but with words you have really never heard of."
|
|
|
|
|
I've tried that and it doesn't seem to make any difference. How would I avoid invalidating the form? Thus far this is just a single control on a form without any additional code.
|
|
|
|
|
I would appreciate to let me know how I can pause the application run for some time (For example 1 second).
Regards,
Sassan Komeili Zadeh
|
|
|
|
|
Sassan Komeili Zadeh wrote:
I would appreciate to let me know how I can pause the application run for some time (For example 1 second).
using System.Threading;
<font color="green">
Thread.Sleep(1000);
Nick Parker
The only man who never makes a mistake is the man who never does anything. - Theodore Roosevelt
|
|
|
|
|
|
I though I was way past this when I went to program it, but once again C# stumps me and my old C programming habbits...
OK, so I have this stupid little win app I made in vs.net and it has a text box and another text box. You put your first and last name into those text boxes and then you push the 'generate' button of the form. Then the first and second text box's info are put togeather and the person's full name is printed out to the third text box. It's that simple... but rather then elaborating anymore on what went wrong can somebody just give me the code??? I think it would be alot easier, thanks.
-.a.e.
P.S. All I need is all the stuff after the "[STAThread]" thingy.
/\ |_ E X E GG
|
|
|
|
|
Man, somebody should help that kid out... He's dumb...
/\ |_ E X E GG
|
|
|
|
|
eggie5 wrote:
P.S. All I need is all the stuff after the "[STAThread]" thingy.
Um, double click on your button once you have all your textboxes on your form, add the following (or something like it)
private void button1_Click(object sender, System.EventArgs e)
{
this.textBox3.Text = this.textBox1.Text.ToString() + " " + this.textBox2.Text.ToString();
}
Nick Parker
The only man who never makes a mistake is the man who never does anything. - Theodore Roosevelt
|
|
|
|
|
Ohhhh, it works now.... Thanks alot I didn't know about the 'this' thing you put on it... well it worked so who cares....
/\ |_ E X E GG
|
|
|
|
|
You actually don't need to use the "this" keyword when you are dealing with members of the class you're in. They're just there so that when you hit the period, the dropdown list kicks in and offers you a list of members.
Hey, what can I say? I'm a chick magnet...a babe conductor...a logarithm for the ladies.
-Strong Bad from HomeStarRunner.com
Essential Tips for Web Developers
|
|
|
|
|
David Stone wrote:
They're just there so that when you hit the period, the dropdown list kicks in and offers you a list of members.
I used to do that till I realized Alt-Right Arrow does the same.
MyDUMeter: a .NET DUMeter clone "Thats like saying "hahahaha he doesnt know the difference between a cyberneticradioactivenuclothermolopticdimswitch and a biocontainingspherogramotron", but with words you have really never heard of."
|
|
|
|
|
David Stone wrote:
They're just there so that when you hit the period, the dropdown list kicks in and offers you a list of members.
David there is actually a little history regarding the "this" pointer, this was the best I could do on short notice:
The this Pointer[^]
The this Pointer[^]
Nick Parker
The only man who never makes a mistake is the man who never does anything. - Theodore Roosevelt
|
|
|
|
|
Sweetie,
You don't need to call .ToString() on a Text Property..LOL.
Amber Star
|
|
|
|
|
amberstar wrote:
Amber Star
Who is that a picture of that you have on your profile?
Nick Parker
The only man who never makes a mistake is the man who never does anything. - Theodore Roosevelt
|
|
|
|