我正在做一个 C# 项目,我有这个方法
private static Encryption_Model Enc(byte[] PlainData,byte[] Key)
{
//Some logic code here
}
Run Code Online (Sandbox Code Playgroud)
Key我希望用户以两种类型之一输入它的参数byte[]或int.
有没有办法强制用户以两种类型之一输入 Key 参数byte[]或int不使用重载?
提前致谢。
不,重载就是为了这个。你为什么不想要那个?
当然,您可以添加两个默认参数并在两者都没有提供时抛出:
private static Encryption_Model Enc(byte[] plainData, byte[] keyBytes = null, int? keyInt = null)
{
if ((keyBytes == null && keyInt == null)
|| (keyBytes != null && keyInt != null))
{
throw new ArgumentException("Provide either keyBytes or keyInt");
}
}
Run Code Online (Sandbox Code Playgroud)
但这很糟糕,因为现在您的方法必须弄清楚提供了哪个参数以及如何使用它们,并且它不提供编译时安全性。这样做:
private static Encryption_Model Enc(byte[] plainData, int key)
{
var keyBytes = GetBytesFromInt(key); // Probably BitConverter.GetBytes()
return Enc(plainData, keyBytes);
}
private static Encryption_Model Enc(byte[] plainData, byte[] key)
{
// ...
}
Run Code Online (Sandbox Code Playgroud)