是否接受Object作为参数?

Cas*_*erT 2 c# conventions type-conversion

让我们说我有一个文本框或任何其他形式的输入,要求提供社会安全号码.我想要注意的是,SSN是一个纯粹的例子,我现在只是想到了.该输入最初将自然地存储为字符串.

string s = Console.ReadLine();
Run Code Online (Sandbox Code Playgroud)

让我们说我想要一个验证SSN的方法,它可能会在我的代码中用于各种各样的地方.哎呀,我甚至可能在一个尚未由用户输入确定的变量上调用该方法.

这可以接受吗?

public bool IsValidSSN(Object SSN)
{
int mySSN;
    if(Int.Parse(SSN == false)
    {
    mySSN = Convert.toInt32(SSN);
    }
...
}
Run Code Online (Sandbox Code Playgroud)

或者你会坚持要求我提供特定的数据类型,例如

public bool IsValidSSN(int SSN)
{
...
}
Run Code Online (Sandbox Code Playgroud)

因此我需要在输入方法之前将输入转换为正确的数据类型.

顺便说一句:我不是问如何做一个正确的IsValidSSN代码:)我只是想举例说明我的意思:我可以接受Object数据类型作为参数还是应该尽量避免它?

Jar*_*Par 7

如果你必须接受一个对象,我至少会有一个带有强类型参数的方法的重载.然后将对象变体提供给这些方法.

public bool IsValidSSN(object ssn) {
  ...
  IsValidSSN(Convert.ToInt32(ssn));
  ...
}

public bool IsValidSSN(int ssn) {
  ...
}
Run Code Online (Sandbox Code Playgroud)