gpt4 book ai didi

c# - 使用 String.ToUpperInvariant() 规范化字符串

转载 作者:可可西里 更新时间:2023-11-01 09:11:25 27 4
gpt4 key购买 nike

我目前正在我的 SQL Server 数据库中以小写形式存储标准化版本的字符串。例如,在我的 Users 表中,我有一个 UserName 和一个 LoweredUserName 字段。根据上下文,我使用 T-SQL 的 LOWER() 函数或 C# 的 String.ToLower() 方法生成用户名的小写版本以填充 LoweredUserName 字段。根据Microsoft's guidelinesVisual Studio's code analysis rule CA1308 ,我应该使用 C# 的 String.ToUpperInvariant() 而不是 ToLower()。根据 Microsoft 的说法,这既是性能问题又是全局化问题:转换为大写字母是安全的,而转换为小写字母可能会导致信息丢失(例如,the Turkish 'I' problem)。

如果我转向使用 ToUpperInvariant 进行字符串规范化,我也将不得不更改我的数据库架构,因为我的架构基于 Microsoft's ASP.NET Membership框架(参见 this related question ),它将字符串规范化为小写。

Microsoft 告诉我们在 C# 中使用大写规范化,而它自己的成员表和过程中的代码却使用小写规范化,这不是自相矛盾吗?我应该将所有内容都切换为大写规范化,还是继续使用小写规范化?

最佳答案

根据 CA1308 ,这样做的原因是某些字符无法从大写字母往返转换为小写字母。重要的是你总是朝着一个方向移动,所以如果你的标准是总是移动到小写那么就没有理由改变它。

关于c# - 使用 String.ToUpperInvariant() 规范化字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/773703/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com