2016-05-30 5 views
-8

私はObject.ToString()メソッドのように簡単に文字列をintに変換するためのメソッドを作成するのに役立つ必要があります。C#Create Object.ToInt()Like Object.ToString()

public int Object.ToInt(){ 
     ????????? 
    } 

この方法の作成にお役立てください。

私はそれを使用できますか?

public static class MyExtensions 
{ 
    public static int ToInt32(this object Str) 
    { 
     if (Str != null && Str.ToString().Length > 0) 
     { 
      try 
      { 
       return Convert.ToInt32(Str); 
      } 
      catch { return default(int); } 
     } 
     return default(int); 
    } 
} 
+6

[拡張方法](https://msdn.microsoft.com/en-us/library/bb383977.aspx)の詳細を読む必要があります。 –

+0

文字列 '' Hello world "'を渡すときにあなたのメソッドの結果はどうなりますか?自分でその質問に答えることができない場合、コンピュータができる方法はありません。 –

+0

@ GediminasMasaitis私は最終的に変換されるかどうかは、メソッドを使用したいです。コンバーチブルは、私がこのメソッドと呼んでいる場所に依存しています。本当ですか? –

答えて

0

このメソッドは既に存在します。 - Object.GetHashCode

あなたがしたいことはかなりできませんが、あなたが望むことをするのは現実的に不可能であり、このメソッドはすべてのオブジェクトに対して整数を生成します。

Convert.ToInt32をご覧になることもできます。それはあなたが期待していることの多くを行いますが、すべてのオブジェクトに対して機能しません。ほとんどの場合、InvalidCastExceptionが得られます。

4

あなたはextension method作成することができます。

public static class EX 
{ 
    public static int ToInt32(this object o) 
    { 
     if (o == null) 
     { 
      return default(int); 
     } 

     return Convert.ToInt32(o); 
    } 
} 
+0

パラメータが数字でないか、または長い場合でも失敗します。おそらく単純化のためにいくつかの例外処理が省略されていますか? – HimBromBeere

+0

同意します。しかし、それはすべてのソリューションに当てはまるでしょう。 –

+0

**任意の**オブジェクトを使用できるToStringではなく(結果は奇妙かもしれません)。 – HimBromBeere

0

これは本当に悪いアイデアのように私に聞こえます。これらのいわゆるいわゆるextension-methodsを作成するときは、のインスタンスがobjectの場合はintに変換できるかどうかを尋ねる必要があります。

ToInt("anyString"); 

しかし、あなたは任意のオブジェクトの文字列表現を考えることができます。だからあなたの番号を変換するヘルパークラスを定義する方がいいでしょうか、代わりにint.Parseに電話してください。

関連する問題