Confusion over Static class and Static method!

anup_daware

Newcomer
Joined
Mar 13, 2006
Messages
24
Location
India
Confusion over Static class and Static method!
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:
C#:
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
 
Last edited by a moderator:
1) A local variable is local to each method invocation (each time you call the function a new variable is created) so there is never a conflict between threads, users, or recursive calls.

2) You save the operations of constructing an object (once) and a single push and pop operation (for each invocation). This "performance benefit" is negligible. You should use the design that is simplest or best suits your application's object model.
 
Back
Top