我是否可以在没有类型的情况下声明变量,然后根据某些条件指定类型?例如,我想根据用户想要使用的大小创建一个SHA Hash对象:
//get the Sha hasher
var shaHash;
switch (this.HASH_ALGORITHM)
{
case HashAlgorithm.SHA256: //HashAlgorithm is an enum.
shaHash = SHA256.Create();
break;
case HashAlgorithm.SHA384:
shaHash = SHA384.Create();
break;
case HashAlgorithm.SHA512:
shaHash = SHA512.Create();
break;
}
//... do hashing
Run Code Online (Sandbox Code Playgroud)
这可能吗?
mdm*_*mdm 18
不,那不行.但是,鉴于所有这三种类型都继承自System.Security.Cryptography.HashAlgorithm,您可以声明该类型的变量:
HashAlgorithm shaHash;
switch(this.HASH_ALGORITHM)
{
// snip
}
Run Code Online (Sandbox Code Playgroud)
编辑
只是补充一点,之所以var shaHash;不起作用的原因是因为这var只是一种简短的说法"我不确定这里使用的最佳类型,所以请为我推断它".编译器要求您指定初始值,以便它可以确定要使用的最佳类型.