Generic extension method in C# -


i have written c# extension method works int. code simple - determines if given int starts int (without using string conversions) , returns either true or false:

namespace startswithnumberx {     public static class intextensions     {         /// <summary>         /// determine if current number starts number.         /// </summary>         /// <param name="number"></param>         /// <param name="startswith"></param>         /// <returns></returns>         public static bool startswith(this int number, int startswith)         {             var inputplace = number.findplacenumber();             var compareplace = startswith.findplacenumber();              var placediff = inputplace - compareplace;              var numbercopy = number;              (var = 0; < placediff; i++)             {                 numbercopy = numbercopy/10;             }              return numbercopy == startswith;         }          /// <summary>         /// find "place" of number.          /// less 10 = 1          /// less 100 = 2         /// less 1000 = 3          /// etc.         /// </summary>         /// <param name="number"></param>         /// <returns></returns>         private static int findplacenumber(this int number)         {             var placenumber = 0;              while (number > 0)             {                 number = number/10;                  if (number > 0)                 {                     placenumber++;                 }                 else                 {                     placenumber++;                     break;                 }             }              return placenumber;         }     } } 

i want make code more generic same code work other numeric types say, long, double, decimal too.

is possible in c#, or need duplicate code different number types?

i have not found solution make extension method more generic have idea how make code easier. make normal findplacenumber-method accept dynamic parameter

private static int _findplacenumber(dynamic number)     {         var placenumber = 0;          while (number > 0)         {             number = number / 10;              if (number > 0)             {                 placenumber++;             }             else             {                 placenumber++;                 break;             }         }          return placenumber;     } 

then can make 3 short extension methods, call mehthod this.

 public static int findplacenumber(this int number)     {         return _findplacenumber(number);     }     public static int findplacenumber(this double number)     {         return _findplacenumber(number);     }     public static int findplacenumber(this decimal number)     {         return _findplacenumber(number);     } 

this fast option make extension method more "generic" without writing code. disadvantage of dynamic binding is, slower static typing.


Comments

Popular posts from this blog

Rendering JButton to get the JCheckBox behavior in a JTable by using images does not update my table -

javascript - Using jquery append to add option values into a select element not working -

Android soft keyboard reverts to default keyboard on orientation change -