解释了C#和.Net语法



我是C#的新手,但不是。

有人能解释一下为什么passwordHash能够被分配给user.PasswordHash,而passwordHash只被声明为方法的参数吗?

public async Task<ServiceResponse<int>> Register(User user, string password)
{
CreatePasswordHash(password, out byte[] passwordHash, out byte[] passwordSalt);
user.PasswordHash = passwordHash;
user.PasswordSalt = passwordSalt;
...
}
private void CreatePasswordHash(string password, out byte[] passwordHash, out byte[] passwordSalt)
{
var hmac = new System.Security.Cryptography.HMACSHA256()
using (hmac)
{
passwordSalt = hmac.Key;
passwordHash = hmac.ComputeHash(System.Text.Encoding.UTF8.GetBytes(password));
}
}

在这种情况下,passwordHash传递一个"out";参数,这意味着它有一个由传递给它的方法设置的值,然后可以在方法完成后用于后续计算。实际上,这是一种从方法返回多个内容的方式,也是所有TryParse方法的工作方式。

请参阅https://learn.microsoft.com/en-us/dotnet/csharp/language-reference/keywords/out-parameter-modifier了解更多信息。

最新更新