Jump to content
Xtreme .Net Talk

Recommended Posts

Posted (edited)

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:

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

Edited by PlausiblyDamp
  • Leaders
Posted

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.

[sIGPIC]e[/sIGPIC]

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...