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

C# 如何在字符串插值中使用条件运算符?,c#,conditional-operator,c#-6.0,C#,Conditional Operator,C# 6.0,我目前正在使用这种技术: 我想做一些类似的事情: 你可以这样用 bool flag = true; string body = $"Dear {(flag ? "Mr." : "Mrs.")}"; 需要在表达式周围加括号,如下所示: string body=$“亲爱的{(user.Gender?”先生“:“Mrs.”}{user.First_name}…”; 原因是冒号表示某事物的格式字符串。您可以使用条件表达式周围的一对参数轻松

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

我想做一些类似的事情:

你可以这样用

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

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

string body=$“亲爱的{(user.Gender?”先生“:“Mrs.”}{user.First_name}…”;

原因是冒号表示某事物的格式字符串。

您可以使用条件表达式周围的一对参数轻松完成此操作,但更好的解决方案是通过在类上定义属性使问候语可重用:

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.";
}

使用括号表示:
$“亲爱的{(user.Gender?”先生:“:“Mrs.”}”
不是被否决的投票人,虽然这是一个很好的答案,但我认为OP只是想使用
user.Gender
@MickyD中已经存在的标志。这只是一个例子,OP可以参考并相应地使用
bool flag  = true;
string body = $"Dear {(flag ? "Mr." : "Mrs.")}";
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.";
}