如何在字符串插值中使用条件运算符?

时间:2020-08-01 12:20:17

标签: c# conditional-operator c#-6.0

我目前正在使用这种技术:

...
    string s = user.Gender ? "Mr." : "Mrs.";
    string body = $@"Dear {s} {user.First_name}..."
...

我想做类似的事情:

...
    string body = $"Dear {return user.Gender ? "Mr." : "Mrs."} {user.First_name}..."
...

3 个答案:

答案 0 :(得分:5)

您需要在表达式周围加上括号,如下所示:

string body = $"Dear {(user.Gender ? "Mr." : "Mrs.")} {user.First_name}...";

这样做的原因是冒号表示某些内容的格式字符串。

答案 1 :(得分:1)

您可以轻松地在条件表达式周围使用一对括号,但更好的解决方案是通过在类上定义一个属性来使问候语可重用:

public class User {
    public string FirstName { get; set; }
    public string LastName { get; set; }
    public bool Gender { get; set; }
    public string Title { get => Gender ? "Mr." : "Mrs."; }
    public string Greeting { get => $"{Title} {FirstName} {LastName}"; }
}

void run()
{
    var user = new User { Gender = true, FirstName = "John", LastName = "Smith" };
    string simpleSolution = $"Dear {(user.Gender ? "Mr." : "Mrs.")} {user.FirstName} {user.LastName}, hello and welcome.";
    string betterSolution = $"Dear {user.Greeting}, hello and welcome.";
}

答案 2 :(得分:0)

您可以这样使用

bool flag  = true;
string body = $"Dear {(flag ? "Mr." : "Mrs.")}";
相关问题