Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

If statement with multiple variables ending with a number [duplicate]

Tags:

c#

Variables:

private string filePath1 = null;
private string filePath2 = null;
private string filePath3 = null;
private string filePath4 = null;
private string filePath5 = null;
private string filePath6 = null;
private string filePath7 = null;
private string filePath8 = null;
private string filePath9 = null;
private string filePath10 = null;

Current If statement

if (string.IsNullOrEmpty(filePath1))
{
    errors.Add("File Not Attached");
}

if (string.IsNullOrEmpty(filePath2))
{
    errors.Add("File Not Attached");
}
....

Question:

Instead of having multiple if statements, for each variable. How can I create 1 if statement to go through all these variables?

Something like this:

if (string.IsNullOrEmpty(filePath + range(1 to 10))
{
    errors.Add("File Not Attached");
}
like image 613
EdGzi Avatar asked Feb 24 '20 13:02

EdGzi


People also ask

How do you compare multiple values in an if statement?

To check if a variable is equal to all of multiple values, use the logical AND (&&) operator to chain multiple equality comparisons. If all comparisons return true , all values are equal to the variable. Copied! We used the logical AND (&&) operator to chain multiple equality checks.

How do you test multiple variables for equality against a single value?

If you have the opposite case and you have multiple variables you need to check against one value, you can swap the left and right sides of the in operator. So instead of using or operators like this: >>> a, b, c = 3.1415, 'hello', 42 >>> if a == 'hello' or b == 'hello' or c == 'hello': ...

How do you compare 4 variables in Python?

How do you compare 4 variables in Python? Use or or and to compare multiple variables to a value Place or between multiple boolean variables to check if any of the variables are true. Place and between multiple boolean variables to check if all of the variables are true.

How do I test multiple variables in Python?

To test multiple variables x , y , z against a value in Python, use the expression value in {x, y, z} . Checking membership in a set has constant runtime complexity. Thus, this is the most efficient way to test multiple variables against a value.


2 Answers

You can achieve this using Reflection. This is obviously discouraged for this scenario, as the other answers provide better solutions, just wanted to show you it's doable the way you intended it to be done (which doesn't mean it's the correct way)

public class Test
{
    private string filePath1 = null;
    private string filePath2 = null;
    private string filePath3 = null;
}

Usage:

Test obj = new Test();

//loop through the private fields of our class
foreach (var fld in obj.GetType().GetFields(BindingFlags.NonPublic | BindingFlags.Instance)
                                     .Where(x => x.Name.StartsWith("filePath"))) // filter
{
    if (string.IsNullOrEmpty(fld.GetValue(obj) as string))
    {
        errors.Add("File Not Attached in variable: " + fld.Name);
    }
}
like image 114
Innat3 Avatar answered Nov 15 '22 20:11

Innat3


In nearly all cases where you're using variables with a differently numbered suffix, you should really be using a collection (array, list, ...). This is one of those cases. I'll be using a list for this answer but any collection will suffice.

private List<string> filePaths = new List<string>()
                                 {
                                     "path1",
                                     "path2",
                                     "path3",
                                     "path4"
                                 };

You can then use a loop to iterate over your list:

foreach (string path in filePaths)
{
    if(String.IsNullOrEmpty(path))
        errors.Add("File not attached");
}
like image 37
Flater Avatar answered Nov 15 '22 21:11

Flater