By using this site, you agree to our updated Privacy Policy and our Terms of Use. Manage your Cookies Settings.
424,847 Members | 2,392 Online
Bytes IT Community
+ Ask a Question
Need help? Post your question and get tips & solutions from a community of 424,847 IT Pros & Developers. It's quick & easy.

accessing a variable

P: n/a
I have a class that contains three local variables. I need to write a
method that updates one of these at a time based on a condition. I would
like to do this without writing a bunch of redundant code. For a very
simplified example:

private string x,y,z;

private void update(DayOfWeek d, int t)
{
switch(d)
{
case d.Monday:
switch (t)
{
case 1:
//update variable "x"
break;
case 2:
//update variable "y"
break;
}
case d.Tuesday:
switch (t)
{
case 1:
//update variable "x"
break;
case 2:
//update variable "y"
break;
}
// ...and so on for the remaining days of the week
}
}

I want to be able to simply call another method in order to eliminate
the nested switch block, but am unsure about how to go about this.

Can anybody help me? Thanks!

*** Sent via Developersdex http://www.developersdex.com ***
Aug 31 '06 #1
Share this Question
Share on Google+
3 Replies


P: n/a
Phil,

Why not just pass the variable that you want modified by ref, instead of
t? Then all you need is one switch statement, and you just update the
variable appropriately.

Hope this helps.

--
- Nicholas Paldino [.NET/C# MVP]
- mv*@spam.guard.caspershouse.com

"Phil Townsend" <ph*******@gmail.comwrote in message
news:%2****************@TK2MSFTNGP04.phx.gbl...
>I have a class that contains three local variables. I need to write a
method that updates one of these at a time based on a condition. I would
like to do this without writing a bunch of redundant code. For a very
simplified example:

private string x,y,z;

private void update(DayOfWeek d, int t)
{
switch(d)
{
case d.Monday:
switch (t)
{
case 1:
//update variable "x"
break;
case 2:
//update variable "y"
break;
}
case d.Tuesday:
switch (t)
{
case 1:
//update variable "x"
break;
case 2:
//update variable "y"
break;
}
// ...and so on for the remaining days of the week
}
}

I want to be able to simply call another method in order to eliminate
the nested switch block, but am unsure about how to go about this.

Can anybody help me? Thanks!

*** Sent via Developersdex http://www.developersdex.com ***

Aug 31 '06 #2

P: n/a

Here is a better example of what I want to do.

foreach (TimeEntry t in TimeEntries)
{
_Total += t.Duration;
switch (_Categories[t.CategoryId].CategoryType)
{
case 0:
_DirectTotal += t.Duration;
AddTime(ref DirectEntries, t);
switch (t.DateCreated.DayOfWeek)
{
case DayOfWeek.Friday:
_DirectFridayTotal += t.Duration;
break;
case DayOfWeek.Monday:
_DirectMondayTotal += t.Duration;
break;
case DayOfWeek.Saturday:
_DirectSaturdayTotal += t.Duration;
break;

// and so on for the reaminder of the week

default: break;
}
break;
case 1:
_IndirectTotal += t.Duration;
AddTime(ref IndirectEntries, t);
switch (t.DateCreated.DayOfWeek)
{
case DayOfWeek.Friday:
_IndirectFridayTotal += t.Duration;
break;
case DayOfWeek.Monday:
_IndirectMondayTotal += t.Duration;
break;
case DayOfWeek.Saturday:
_IndirectSaturdayTotal += t.Duration;
break;

// and so on for the reaminder of the week

default: break;
}
break;
}
}

I am trying to figure out a way to avoid all the nested switch blocks
and how to figure out which variable to update... thx!
*** Sent via Developersdex http://www.developersdex.com ***
Aug 31 '06 #3

P: n/a

Phil Townsend wrote:
Here is a better example of what I want to do.

foreach (TimeEntry t in TimeEntries)
{
_Total += t.Duration;
switch (_Categories[t.CategoryId].CategoryType)
{
case 0:
_DirectTotal += t.Duration;
AddTime(ref DirectEntries, t);
switch (t.DateCreated.DayOfWeek)
{
case DayOfWeek.Friday:
_DirectFridayTotal += t.Duration;
break;
case DayOfWeek.Monday:
_DirectMondayTotal += t.Duration;
break;
case DayOfWeek.Saturday:
_DirectSaturdayTotal += t.Duration;
break;

// and so on for the reaminder of the week

default: break;
}
break;
case 1:
_IndirectTotal += t.Duration;
AddTime(ref IndirectEntries, t);
switch (t.DateCreated.DayOfWeek)
{
case DayOfWeek.Friday:
_IndirectFridayTotal += t.Duration;
break;
case DayOfWeek.Monday:
_IndirectMondayTotal += t.Duration;
break;
case DayOfWeek.Saturday:
_IndirectSaturdayTotal += t.Duration;
break;

// and so on for the reaminder of the week

default: break;
}
break;
}
}

I am trying to figure out a way to avoid all the nested switch blocks
and how to figure out which variable to update... thx!
Well, for starters, why have separate fields for _DirectFridayTotal,
_DirectMondayTotal, etc. Why not have:

private int[] _DirectTotals = new int[7];

then you can do this:

this._DirectTotals[t.DateCreated.DayOfWeek] += t.Duration;

Aug 31 '06 #4

This discussion thread is closed

Replies have been disabled for this discussion.