我目前正在使用这种技术:
...
string s = user.Gender ? "Mr." : "Mrs.";
string body = $@"Dear {s} {user.First_name}..."
...
我想做类似的事情:
...
string body = $"Dear {return user.Gender ? "Mr." : "Mrs."} {user.First_name}..."
...
答案 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.")}";