web-dev-qa-db-ja.com

「戻り」C#の戻り型は何ですか

コンソールアプリケーションを作成していて、ユーザーが情報を入力して新しいPersonオブジェクトを作成できる「メニュー」を持っています。以下はメソッドの内部です。

        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();

そのようです。新しい人を作りたくないと決断した場合、ユーザーがいつでもメソッドを終了できるようにしたい。 「CheckExit」という新しいメソッドを作成します。「EXIT」と入力すると、「CreatePerson」メソッドが残ります。だから私は「CheckExit」がリターンを返すことを望みます。それ以外の場合は、すべての入力の後に「if」ステートメントを追加する必要があり、それが煩雑になります。

これは可能ですか?返品には返品タイプがありますか?これを行う適切な方法は何でしょうか?

9
Arkyris

Returnステートメントは、戻り値の型を持つメソッドから値を返すために使用されます。戻り値の型としてvoidを使用してメソッドを記述する場合、return;を使用してメソッドを終了できます。

たとえば、次のメソッドは戻り値の型として文字列を使用し、

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

オブジェクトを作成して呼び出し元のメソッドに返すメソッドを記述している場合、戻り値の型はPersonになります(別のことをするつもりがない場合)。ユーザー入力を確認し、人物を作成しないことにした場合は、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;
}

そして、あなたはメインでこの方法を使うことができます、

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

メソッドを終了したい場合は、returnを使用するのが唯一の方法です。ただし、次のようにコードを短くすることができます。

    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