PC Review


Reply
Thread Tools Rate Thread

Confusion over Static class and Static method!

 
 
Anup Daware
Guest
Posts: n/a
 
      2nd Feb 2007
Hi Group,
I have a little confusion over the use of static class in C#.

I have a static method in my static class. This method reads an xml
and returns a collection of objects.
This collection of objects can be different for different users.
This method uses some non-static variables which are local to this
method.

Following is my static class:
public static class ResponseXmlParser
{
public static Hashtable GetProductInfoList()
{
XmlTextReader xmlTextReader;
bool isScheduleElement = false;
bool isResultItem = false;
ProductInfo productInfo= new ProductInfo();
Hashtable productInfoList = new Hashtable();
try
{
//Create an instance of the XMLTextReader.
//MaterialSearchResponse.xml is different for different users.
xmlTextReader = new XmlTextReader("MaterialSearchResponse.xml");
// Process the XML file.
while (xmlTextReader.Read())
{
if(productInfo == null)
productInfo = new ProductInfo();
if (xmlTextReader.NodeType == XmlNodeType.Element)
{
if (xmlTextReader.Name == "CHECK_SCHEDULE_EX")
isScheduleElement = true;
if (xmlTextReader.Name.Equals("CHECK_ITEM_OUT"))
isResultItem = true;

if (!isScheduleElement && isResultItem)
{
switch (xmlTextReader.Name)
{
case "ITM_NUMBER":
if (!xmlTextReader.IsEmptyElement)
productInfo.ItemNumber =
xmlTextReader.ReadElementContentAsInt();
break;
...
...
..
case "REQ_QTY":
if (!xmlTextReader.IsEmptyElement)
productInfo.RequestedQuantity =
xmlTextReader.ReadElementContentAsInt();
if (productInfo != null)
productInfoList.Add(productInfo.IPC, productInfo);
productInfo = null;
break;
}
}
}
}//END OF WHILE
}
catch (XmlException ex){}
catch (Exception ex){}
finally
{
if (xmlTextReader!= null)
xmlTextReader.Close();
}
return productInfoList;
}
}


My doubts are:
1. Does a non-static local variable of static methods works fine in
multi-user environment (Web Application) where method is expected to
return different results?
2. Is there any other performance a benefit using the static methods
except the non-requirement of creation of object of class in which
method resides?

Thanks,
Anup Daware

 
Reply With Quote
 
 
 
 
=?Utf-8?B?TWlsb3N6IFNrYWxlY2tpIFtNQ0FEXQ==?=
Guest
Posts: n/a
 
      2nd Feb 2007
Hi Anup,

> My doubts are:
> 1. Does a non-static local variable of static methods works fine in
> multi-user environment (Web Application) where method is expected to
> return different results?


Yes indeed, local variables (function / proc ) are always non-static (even
in static methods) and allocated on the call stack (of course reference types
are created on the heap, but pointers to these objects are local too)

> 2. Is there any other performance a benefit using the static methods
> except the non-requirement of creation of object of class in which
> method resides?


I was you I wouldn't bother. But if you really want to know - it depends. If
the instance method is virtual, one extra jump is required to dereference
method address in V-table, so it’s more expensive (but as I said – these days
it’s really a tiny thing). Please note that algorithm and logic is more
important that language related improvements, in addition to that, if you are
going to call this method once (not in multi thousand step loop), there is
no point to bother. Anyway, if you are interested in this topic, there are
nice articles out there,, for instance
http://www.codeguru.com/csharp/.net/...php/c11849__1/

Regards

Milosz

 
Reply With Quote
 
Anup Daware
Guest
Posts: n/a
 
      2nd Feb 2007
Hi Milosz,

Thanks for the answer.
You cleared all my doubts related to static

Thanks,
Thanks

On Feb 2, 3:24 pm, Milosz Skalecki [MCAD] <mily...@DONTLIKESPAMwp.pl>
wrote:
> Hi Anup,
>
> > My doubts are:
> > 1. Does a non-static local variable of static methods works fine in
> > multi-user environment (Web Application) where method is expected to
> > return different results?

>
> Yes indeed, local variables (function / proc ) are always non-static (even
> in static methods) and allocated on the call stack (of course reference types
> are created on the heap, but pointers to these objects are local too)
>
> > 2. Is there any other performance a benefit using the static methods
> > except the non-requirement of creation of object of class in which
> > method resides?

>
> I was you I wouldn't bother. But if you really want to know - it depends. If
> the instance method is virtual, one extra jump is required to dereference
> method address in V-table, so it's more expensive (but as I said - these days
> it's really a tiny thing). Please note that algorithm and logic is more
> important that language related improvements, in addition to that, if you are
> going to call this method once (not in multi thousand step loop), there is
> no point to bother. Anyway, if you are interested in this topic, there are
> nice articles out there,, for instancehttp://www.codeguru.com/csharp/.net/net_general/performance/article.p...
>
> Regards
>
> Milosz



 
Reply With Quote
 
 
 
Reply

Thread Tools
Rate This Thread
Rate This Thread:

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off
Trackbacks are On
Pingbacks are On
Refbacks are Off


Similar Threads
Thread Thread Starter Forum Replies Last Post
Invoking a Static Method in a Static Class =?Utf-8?B?SmltSGVhdmV5?= Microsoft C# .NET 3 7th Feb 2007 03:17 PM
Confusion over Static class and Static method! Anup Daware Microsoft C# .NET 2 5th Feb 2007 12:41 PM
Static class method return non-static object? Paschalis Pagonidis Microsoft C# .NET 8 10th Nov 2004 10:10 AM
Re: Static method confusion mia lanui Microsoft C# .NET 0 1st Aug 2003 04:33 AM
Re: Static method confusion Rob Teixeira [MVP] Microsoft C# .NET 0 1st Aug 2003 03:39 AM


Features
 

Advertising
 

Newsgroups
 


All times are GMT +1. The time now is 07:16 AM.