anup_daware Posted February 2, 2007 Posted February 2, 2007 (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 February 2, 2007 by PlausiblyDamp Quote
Leaders snarfblam Posted February 2, 2007 Leaders Posted February 2, 2007 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. Quote [sIGPIC]e[/sIGPIC]
anup_daware Posted February 5, 2007 Author Posted February 5, 2007 Hi Marble, Thanks for the reply. It really helped :) Quote
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.