Best Practices for ArgumentException
private void DeepCopy(object[] i_Lhs, object[] i_Rhs)
{
if(i_Lhs == null) throw new ArgumentNullException("Lhs cannot be null.");
if(i_Rhs == null) throw new ArgumentNullException("Rhs cannot be null.");
if(i_Lhs.Length != i_Rhs.Length) throw new ArgumentException("Lhs length must be the same as Rhs length.");
for(int i = 0; i < i_Rhs.Length; i++)
{
i_Lhs[i] = i_Rhs[i];
}
}
private void DeepCopy(object[] i_Lhs, object[] i_Rhs)
{
if(i_Lhs == null) return;
if(i_Rhs == null) return;
if(i_Lhs.Length != i_Rhs.Length) return;
for(int i = 0; i < i_Rhs.Length; i++)
{
i_Lhs[i] = i_Rhs[i];
}
}

