web-dev-qa-db-fra.com

Quel est le type de retour de "return" C #

Je crée une application console et j'ai un "Menu" où l'utilisateur peut entrer des informations pour créer un nouvel objet Personne. Ce qui suit est à l'intérieur d'une méthode.

        Write("Please enter the first name: ", false);
        string fName = Console.ReadLine().ToUpper();
        Write("Please enter the middle initial: ", false);
        string mInitial = Console.ReadLine().ToUpper();
        Write("Please enter the last name: ", false);
        string lName = Console.ReadLine().ToUpper();

ainsi. Je veux que l'utilisateur puisse quitter la méthode à tout moment s'il décide qu'il ne veut pas créer une nouvelle personne. Donc j'aimerais créer une nouvelle méthode appelée "CheckExit" et s'ils tapent "EXIT", cela laissera la méthode "CreatePerson". Je veux donc que le "CheckExit" renvoie un retour. Sinon, je dois ajouter une déclaration "si" après chaque entrée et cela devient encombrant.

Est-ce possible? Le retour a-t-il un type de retour? Quelle serait la bonne façon de procéder?

9
Arkyris

Les instructions de retour sont utilisées pour renvoyer une valeur à partir d'une méthode qui a un type de retour. Lorsque vous écrivez une méthode avec void comme type de retour, vous pouvez utiliser le return; pour quitter la méthode.

par exemple, la méthode suivante utilise une chaîne comme type de retour,

public string ReturnString() { return "thisString"; }

Si vous écrivez une méthode qui crée l'objet et le renvoie à la méthode appelante, le type de retour sera la personne (sauf si vous avez l'intention de faire autre chose). Si vous vérifiez l'entrée utilisateur et décidez de ne pas créer de personne, vous pouvez utiliser return null;.

public class Person
{
    public string FirstName { get; set; }
    public string LastName { get; set; }
    public string Initial { get; set; }
}

public static Person CreatePerson()
{
    Person person = new Person();
    Console.Write("Please enter the first name: ", false);
    string fName = Console.ReadLine().ToUpper();
    if (string.IsNullOrEmpty(fName) || fName.ToLower().Equals("exit"))
        return null;
    person.FirstName = fName;

    Console.Write("Please enter the middle initial: ", false);
    string mInitial = Console.ReadLine().ToUpper();
    if (string.IsNullOrEmpty(mInitial) || mInitial.ToLower().Equals("exit"))
        return null;
    person.Initial = mInitial;

    Console.Write("Please enter the last name: ", false);
    string lName = Console.ReadLine().ToUpper();
    if (string.IsNullOrEmpty(lName) || lName.ToLower().Equals("exit"))
        return null;
    person.LastName = lName;

    return person;
}

Et vous pouvez utiliser cette méthode dans le Main,

public static void Main(string[] args) 
{
    Person person = CreatePerson();
    if (person == null) {
       Console.WriteLine("User Exited.");
    }
    else
    {
       // Do Something with person.
    }
}
1
Jawad

Le seul moyen est d'utiliser return si vous souhaitez terminer la méthode. Mais vous pouvez raccourcir votre code comme ceci:

    static void Main(string[] args)
    {
        createPerson();

        Console.WriteLine("Some display goes here...");
    }

    static void createPerson()
    {
        Console.WriteLine("Please enter the first name: ");
        string fName = getInput();
        if (isExit(fName))
        {
            return;
        }

        Console.WriteLine("Please enter the middle initial: ");
        string mInitial = getInput();
        if (isExit(mInitial))
        {
            return;
        }

        Console.WriteLine("Please enter the last name: ");
        string lName = getInput();
        if (isExit(lName))
        {
            return;
        }
    }

    static string getInput()
    {
        return Console.ReadLine().ToUpper();
    }

    static bool isExit(string value)
    {
        if (value == "EXIT")
        {
            Console.WriteLine("Create person has been canceled by the user.");
            return true;
        }
        return false;
    }
0
Jonel Zape