In sample code below, it will create more than one class object inside the for-each loop. That is not good. Never create a new class instance inside a loop.
1. Wrong Code:
a_function()
{
DataSet ds;
message_class mc = new message_class();
ds = mc.message_get_saved_by_message_id(l_old_message_id);
if (ds.Tables.Count > 0)
{
if (ds.Tables[0].Rows.Count > 0)
{
//do something here
}
}
//split message here
foreach (string s in search_words)
{
if (s.Trim() != "")
{
DataSet ds2;
message_class mc = new message_class(); //this is wrong. It should be left on the outside of the loop.
ds2 = mc.message_membership(int.Parse(s.ToString()));
if (ds2.Tables.Count > 0)
{
if (ds2.Tables[0].Rows.Count > 0)
{
//some codes here - do sth else
}
}
}
}
}
2. Correct code:
a_function()
{
DataSet ds;
message_class mc = new message_class(); //create a new object once only!
ds = mc.message_get_saved_by_message_id(l_old_message_id);
if (ds.Tables.Count > 0)
{
if (ds.Tables[0].Rows.Count > 0)
{
//do something here
}
}
//split message
DataSet ds2;
foreach (string s in search_words)
{
if (s.Trim() != "")
{
ds2 = mc.message_membership(int.Parse(s.ToString()));
if (ds2.Tables.Count > 0)
{
if (ds2.Tables[0].Rows.Count > 0)
{
//do something here
}
}
}
}
}