在我得到的 WPF 项目中,我有一个名为 IHavePassword 的类,在另一个文件中是一个像这样的按钮的侦听器
private void DoLogin(object parameter)
{
if (parameter is IHavePassword passwordContainer)
{
...
}
}
Run Code Online (Sandbox Code Playgroud)
我的问题与“is”关键字之后的 if 语句有关,它在那里做什么?是否将方法参数与“IHavePassword”类新实例进行比较?
小智 6
您问的好问题,在 C# 中有一个称为模式匹配的概念。所以主要作者试图检查传入的参数是否与 IHavePassord 兼容。如果这是兼容的,则该变量将成为 passwordContainer。
这个指向微软文档的链接会有所帮助。
https://docs.microsoft.com/en-us/dotnet/csharp/language-reference/keywords/is
private void DoLogin(object parameter)
{
// expr (parameter) is type(IHavePassword) varname (passwordContainer)
if (parameter is IHavePassword passwordContainer)
{
// if true you can now have access to passwordContainer.
}
}
Run Code Online (Sandbox Code Playgroud)
希望这可以帮助。谢谢
| 归档时间: |
|
| 查看次数: |
101 次 |
| 最近记录: |