が受け入れオブジェクトのパラメータとしてでなくてもいいですか。

StackOverflow https://stackoverflow.com/questions/967361

  •  12-09-2019
  •  | 
  •  

質問

言いテキストボックスもしくはその他あらゆる形式の入力が問われる社会保障番号です。したいと思いるという点に注意することSSNは純粋な例だと考える。この入力はもちろんであるが文字列として格納されます。

string s = Console.ReadLine();

言い方法を検証するSSNやかさをもう一度"という意味です自分のコードであらゆる場所。タッチパネル、なメソッドを呼び出しに変動していない決定によりユーザー入力します。

これは容認できますか。

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

やま男 主張 うお願い特定のデータ型、e.g

public bool IsValidSSN(int SSN)
{
...
}

およびその私に必要な変換を入力し、正しいデータ型につ前のメソッドを呼び出します。

ちなみ:を要求しているのではないか正しくIsValidSSNコード)<url> <url> <url> <url> <url> <url> <url> <url> <url> <url>ばんがい:でお受けいたしますのオブジェクトデータ型のパラメータとしてやばいいを控えることができるのですか?

役に立ちましたか?

解決

が発生する場合には、受け入れるオブジェクト思いが過負荷になりの方法を強く型付けされたパラメータ。その際、オブジェクトバ飼料を入れます。

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

public bool IsValidSSN(int ssn) {
  ...
}

他のヒント

するようになデザインをいいまい検証が発生している。でも基本的に仕様全体の建築とクラス上位の階層となります。な間違いではあり方について、だがることができるように、ご建築デザイン。

見えない価値を受け入れのオブジェクトです。考えを期待する機能です。こん、このコードで掲載している。と思うんて思ったこと。

if (SSN is string)
    SSN = Convert.toInt32(SSN);
else if (SSN is TextBox)
    SSN = Convert.toInt32(SSN.Value);
else /* etc */

さあどうより:

 bool isValidSSN(int SSN) { /* real valuation code */ }
 bool IsValidSSN(String SSN)  { return isValidSSN(Convert.toInt32(SSN)); }
 bool IsValidSSN(TextBox SSN)  { return isValidSSN(Convert.toInt32(SSN.Value)); }

の過積載の方法より簡単に、より速く、より決定から実行時にコンパイルす。

お上記の例では遠くを入力IsValidSSN.一般的に見るタイピング低減にバグや柔軟性です。

るような状況の下での柔軟性が重要しオブジェクトは最良の選択肢が期待面に数キャストの衝突の例外をログダウンロード

すべてのその他の場合には厳しご入力、書く。

個人的には、私のようSSNクラスを聞くことができることをSSNった場合に有効です。をたてることが重要であるが授業を代表する主体のビジネスの論理です。これは、例えば、、のようなものを必要とするより検証様がクレジットカードクラスです。渡周辺のオンライン版に掲載される予定で最高の場合はさせないように指定できますので、お渡し頃のものとなる主要ビジネスロジックとしてのプリミティブが悪いもの(アーキテクチャによって、SSN1+SSN2=SSN3完全に有効であってもビジネスロジックでナンセンス).

このインスタンスしたことを思で受け入れられない。何が入力された場合はダッシュ、またはその他の分離文字(例:###-##-####)?明らかにできない構文解析の値を整数値としての価値もさくするように心がけています。の使用に関してはどう正規表現ではなく確保のための価値がん望ましい。

利用型"オブジェクト"のパラメータとして、これは完全に有効な多くの場合がございます。そこで、"使います。NETフレームワーク(イベントの代表):

public void Control_MouseOver(object sender, MouseEventArgs e){}

その一環として行われたサンプルのボクシング/Unboxingたというのが、"ジェネリック"の操作変数をいう。純2.0にアクセスしてください。

も利用できるジェネリック医薬品問題の解決になります。作成した場合は、インターフェースを実装したようなものINumericないわからない場合は、実際にインターフェイス)はIComparable対応することができるでしょう動作を行わりの優雅なファッション:

公bool IsValidSNN(INumeric SSN){}

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top