

C#.NET で書いています。  
以下のようなコードがある場合、途中で条件式（IF文）で判定したいのですが、記述可能ですか。  
可能なら、どのような書き方があるでしょうか。

[code]

    prvate List<UserInfo>[] usersList = new List<UserInfo>[8];
    usersList = new List<UserInfo> {
        new UsersInfo{ No=1, FileName="book1.xlsx" sheet=3},
        new UsersInfo{ No=2, FileName="book1.xlsx" sheet=3},  
        new UsersInfo{ No=3, FileName="book1.xlsx" sheet=4},
        new UsersInfo{ No=4, FileName="book1.xlsx" sheet=1}, 
    　　　★★★ この時、↑↑↑の FileNameの値を条件で変えたいです★★★
    　　　↓↓↓ 次のように書けるようですが、この場合、条件が増えたとき可読性に欠けます。
    new UsersInfo{ No=4, FileName=(cond==2 ? "book3.xlsx" : "book1.xlsx"), sheet=1)
    　　　★★★ IF文などで書く方法はあるでしょうか。★★★
    　　　★★★ 書ける場合、どのように書けばいいですか★★★
    
    　　　：
    　　　：
    }
    
[/code]


CC BY-SA 4.0
2018-08-28T05:06:23.243
47871
2018-08-31T08:03:02.723
2018-08-28T05:08:44.303
4236
27434
question
c# .net
List型の初期化中に 条件式を入れることは可能ですか


できません。

挙げられた構文は[コレクション初期化子](https://docs.microsoft.com/ja-
jp/dotnet/csharp/programming-guide/classes-and-structs/object-and-collection-
initializers)と言って単に`Add`メソッドを呼び出すだけのものですので、追加時に条件を含めたいのであれば、素直に`Add`メソッドを呼び出すようにしてください。


CC BY-SA 4.0
2018-08-28T05:10:25.880
47872
2018-08-28T05:10:25.880
4236
47871
answer


好きに関数書けば・・・  
求めてるのは違う？

[code]

    Func<string> getFileName = () =>
    {
        if (cond == 2)
        {
            return "book3.xlsx";
        }
        return "book1.xlsx";
    };
    usersList = new List<UserInfo> {
        new UserInfo() {No = 1, FileName = "book1.xlsx", sheet = 3},
        new UserInfo() {No = 1, FileName = "book1.xlsx", sheet = 3},
        new UserInfo() {No = 1, FileName = "book1.xlsx", sheet = 4},
        new UserInfo() {No = 1, FileName = getFileName(), sheet = 1}
    };
    
[/code]


CC BY-SA 4.0
2018-08-31T08:03:02.723
47972
2018-08-31T08:03:02.723
29935
47871
answer