gpt4 book ai didi

c# - CodeContract.Requires(param != null) 不能证明 param 不会为 null?

转载 作者:太空宇宙 更新时间:2023-11-03 14:25:11 25 4
gpt4 key购买 nike

你好我在下面列出了一个方法:

    public static PasswordCredential Create(string password, string username, string pinCode = null)
{
Contract.Requires<ArgumentException>(!string.IsNullOrWhiteSpace(password), "Invalid Argument: password");
Contract.Requires<ArgumentException>(!string.IsNullOrWhiteSpace(username), "Invalid Argument: username");

PasswordCredential credential = new PasswordCredential();
UTF8Encoding encoder = new UTF8Encoding();
SHA512Managed sha512hasher = new SHA512Managed();


credential.PasswordHash = sha512hasher.ComputeHash(encoder.GetBytes(password)); <-- Requires unproven: s != null
credential.Username = username;
credential.PinCode = pinCode;

return credential;
}

这是否意味着 Contract.Requires 不证明表达式?如果是这样,它有什么用? :?

更新


好的,我发现了一个非常奇怪的代码契约行为。我将此方法移至另一个项目并且有效。不再需要未经证实的警告。然后我回到原来的项目,在 Messages 窗口中,我找到了这一行:消息 1 CodeContracts:建议的前提条件:Contract.Requires(password != null);当我双击此项时,我将导航到 PasswordCredential 的 PinCode 属性。

        [DataMember]
public string PinCode
{
get { return _PinCode; }
set { _PinCode = value == null ? null : value.Trim(); } <-- I'm navigated here
}

但是当我单击警告项时,我被导航到 encoder.GetBytes(password) 行。我不明白怎么了。是错误吗?

最佳答案

好的CC 存在问题(只能在我的项目中重现 :D)。我将项目发送给 CC 团队,得到了非常快的回复。他们正在调查,可能会在下一个版本中修复。无论如何,感谢你们的支持。

关于c# - CodeContract.Requires(param != null) 不能证明 param 不会为 null?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4293746/

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