从一个方法获取变量值到另一个方法?

时间:2019-12-05 01:20:57

标签: c#

在这种情况下,我试图将整数变量“ FileSizeType”的值输入到“ NomCategorie”下的方法中,然后将其转换为字符串(这就是注释所说明的内容)。

static int ChoisirCategory()
        {
            int FileSizeType;
            Console.Write("What type do you want: ");
            FileSizeType = Convert.ToInt32(Console.ReadLine());
            return FileSizeType;
        }

static string NomCategorie(int c)
        {
            //get FileSizeType into c
            string FileType;
            if (c == 1)
            {
                return FileType = "Small";
            }
            else if (c == 2)
            {
                return FileType = "Medium";
            }
            else if (c == 3)
            {
                return FileType = "Large";
            }
            else if (c == 4)
            {
                return FileType = "Huge";
            }
            else
            {
                return FileType="Non-valid choice";
        }

3 个答案:

答案 0 :(得分:0)

我建议使用枚举类

public enum Test
{
    Small = 1,
    Medium = 2,
    Large = 3,
    Huge = 4
}

然后您只需使用

即可转换数字
int integer = 1;
if (Enum.IsDefined(typeof(Test), integer) 
{
  Console.WriteLine((Test)integer). 
}
else 
{
  Console.WriteLine("Bad Integer");
}

output:
Small

答案 1 :(得分:0)

查看现有代码,您已经从FileSizeType返回了ChoisirCategory的值,因此可以将其捕获到变量中,然后将其传递给NomCategorie方法获取类别名称,例如:

int categoryId = ChoisirCategory();
string categoryName = NomCategorie(categoryId);

请注意,还有许多其他可以改进的地方(例如,如果用户输入“ 2”而不是“ 2”会发生什么情况?),但是我认为这些建议可能超出问题范围

答案 2 :(得分:0)

如果您结合了以上两个建议,可以通过以下方式简化代码。我还添加了一个if子句以验证该值不高于可用值。

static enum AvailableSizes
{
        Small = 1,
        Medium = 2,
        Large = 3,
        Huge = 4
}

static int ChoisirCategory()
{
    int FileSizeType;

GetInput:
    Console.Write("What type do you want: ");
    FileSizeType = Convert.ToInt32(Console.ReadLine());

    // Ensure the value is not higher than expected
    // (you could also check that it is not below the minimum value)
    if (FileSizeType > Enum.GetValues(typeof(AvailableSizes)).Cast<int>().Max());
    {
        Console.WriteLine("Value too high.");
        goto GetInput;
    }

    return FileSizeType;
}


static string NomCategorie(int c)
{
    if (Enum.IsDefined(typeof(AvailableSizes), c) 
    {
        return (AvailableSizes)c; 
    }
    else 
    {
        return "Invalid category";
    }
}

然后在代码中的某处,您将使用此语句调用这些

string categoryStr = NomCategorie(ChoisirCategory());
Console.WriteLinte(categoryStr);  // or do whatever you want with the returned value

使用此代码,如果输入大于4,则将输出“ Value too high”。然后再次询问问题,直到该值不大于4。

如果用户键入0或负值,则将输出“无效类别”。

这可能有助于您确定要在哪里处理输入错误:在用户输入之后或在将数字解析为字符串期间。