【发布时间】:2019-12-07 21:46:41
【问题描述】:
我将一些布尔值存储为字符串会话变量,如下所示:
HttpContext.Session.SetString("SomeBool", user.SomeBool.ToString().ToLower());
这给了我警告,结果可能会因用户文化而异。这怎么可能? “真”或“假”的ToString() 或ToLower() 的结果会以何种方式因文化而异?无论数据库文化或托管环境如何,布尔值不总是由英文单词“True”和“False”表示吗?
我也试过这三个,都给出了完全相同的警告:
HttpContext.Session.SetString("SomeBool", FormattableString.Invariant($"{user.SomeBool.ToString().ToLower()}"));
HttpContext.Session.SetString("SomeBool", String.Format(CultureInfo.CurrentCulture, $"{0}", user.SomeBool.ToString().ToLower()));
HttpContext.Session.SetString("SomeBool", String.Format(CultureInfo.CurrentCulture, user.SomeBool.ToString().ToLower()));
VS 建议我可以禁用 CA1305 警告,但我不想这样做。
有什么建议吗?
更新
虽然 VillageTech 的回答回答了我的问题,但我已更改代码以完全避免该问题。受 Christopher 关于硬编码值的建议的启发:
HttpContext.Session.SetString("SomeBool", user.SomeBool ? "true" : "false");
【问题讨论】:
标签: c# asp.net-core tostring culture tolower