This is probably really basic in C#, but I looked around a lot to find a solution.
In my MVC controller\'s action method, I have an incoming routeid (programid
The scope of the accounttype is limited to the if statement. Do
string accounttype;
if (programid == 0)
{
accounttype = "Membership";
}
else
{
accounttype = "Program";
}
Because you define the variables within closures, they fall out of scope as soon as you exit those closures. You need:
string URL;
if(test)
{
URL = "1";
} else {
URL = "2";
}
Your scoping is incorrect, try this:
string accounttype;
if (programid == 0)
{
accounttype = "Membership";
}
else
{
accounttype = "Program";
}
the scope of the account type variable is in the {
}
of the if. you need to declare the variable outside the if to be able to use it after, or even better:
string accounttype = programid == 0 ? "Membership" : "Program";
The problem is that you're defining your accounttype
variable within the scope of your if
and else
block, so it's not defined outside of those blocks.
Try declaring your variables outside the if
/else
blocks:
string accounttype;
string URL;
if (programid == 0)
{
accounttype = "Membership";
}
else
{
accounttype = "Program";
}
if (results.Count() > 0)
{
URL = accounttype + "some text"
}
else
{
URL = accounttype + "some other text"
}
Or if your code is really this simple, just use the conditional operator:
string accounttype = programid == 0 ? "Membership" : "Program";
string URL = accounttype + (results.Any() ? "some text" : "some other text");
Scope is your problem :)
Since I guess you are new, I'll try to define it in simple words: the scope of a variable is the place where a variable lives. Not all the variables can be called everywhere in your program, and we call those who can, global.
In your case, you are declaring those variables inside an if .. else
statement, and, because of C# rules, they die as soon as the if block ends. This is what the compiler is telling you: you can't call something that doesn't exist.
To solve your problem, you just have to declare
string accounttype;
before the if.. else
and you will be fine.
If you want to read more about scopes, this is a good place to start!