nikki
@nikki (Nikki Mei)

Are you sure you want to delete the question?

If your question is resolved, you may close it.

Leaving a resolved question undeleted may help others!

We hope you find it useful!

### 【C#】return 変数名A[メソッド名(変数B)]の意味を教えてください!

【C#】return 変数名A[メソッド名(変数B)]の意味を教えてください!

C#初学者です!

UnityAssetで購入した2DRPG用のクエスト管理のスクリプトを読んでいるのですが、
・public bool[] completedQuests;
→なぜ配列なのにtrueかfalseしかないbool型を使っているのか。
・return completedQuests[GetQuestNumber(questToCheck)];
→return 変数名A[メソッド名(変数B)]の文が参考書で見たことがない。配列になぜメソッド名等が入るのか?

等でつまづいています。

上記の2点を
・どの内容や用語を参考にすれば良いか(インデクサーなのか等)
・どのような順序で処理がなされているか
をご教示いただけますでしょうか。

よろしくお願いいたします!

該当するソースコード

    public static QuestManager instance;

    [Header("Quest Settings")]
    public string[] quests;
    public bool[] completedQuests;

    // Use this for initialization
    void Start () {
        instance = this;

        completedQuests = new bool[quests.Length];
    }

    // Update is called once per frame
    void Update () {

    }

    //Get the number of a quest
    public int GetQuestNumber(string questToFind)
    {
        for(int i = 0; i < quests.Length; i++)
        {
            if(quests[i] == questToFind)
            {
                return i;
            }
        }

        Debug.LogError("Quest " + questToFind + " does not exist");
        return 0;
    }

    //Check if a quest was completed
    public bool CheckIfComplete(string questToCheck)
    {
        if(GetQuestNumber(questToCheck) != 0)
        {
            return completedQuests[GetQuestNumber(questToCheck)];
        }

        return false;
    }

自分で調べたこと

構造体やインデクサー等と関連しているのかと思ったのですが、いまいち確証がありません。

0

1Answer

なぜ配列なのにtrueかfalseしかないbool型を使っているのか。

クエストをクリアしたかどうかのみを管理したかったから。

  • 未クリアでfalse、クリア済みでtrue
  • 全クエストを管理したいため、bool型の配列

return 変数名A[メソッド名(変数B)]の文が参考書で見たことがない。配列になぜメソッド名等が入るのか?

これは、

int questIndex = GetQuestNumber(questToCheck);
return completedQuests[questIndex];

を一行にまとめて書いただけです。

メソッドA(メソッドB(メソッドC(引数)));

となっていれば、基本一番内側からみていけば良いです。

Cの戻り値型 c = メソッドC(引数);
Bの戻り値型 b = メソッドB(c);
メソッドA(b);

基本と書いたのは、処理の実行が遅延されて後回しされる場合(書き方)もあるからです。
が、始めたばかりの頃に出会うとは思えないので、「へーそんなものもあるんだー」程度に心の片隅に置いて、遭遇した時にまた考えれば良いでしょう。

1Like

Comments

  1. @nikki

    Questioner

    ありがとうございます!
    わからない時は省略を疑ってみます!
    大変助かりました!

Your answer might help someone💌