Confusion over Static class and Static method!

A

Anup Daware

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
 
G

Guest

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/net_general/performance/article.php/c11849__1/

Regards

Milosz
 
A

Anup Daware

Hi Milosz,

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

Thanks,
Thanks
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Members online

No members online now.

Forum statistics

Threads
473,981
Messages
2,570,188
Members
46,731
Latest member
MarcyGipso

Latest Threads

Top