elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Usando Git para manipular el directorio de trabajo, el índice y commits (segunda parte)


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación General
| | |-+  .NET (C#, VB.NET, ASP) (Moderador: kub0x)
| | | |-+  Como crear un nuevo cast explicito en c#?
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Como crear un nuevo cast explicito en c#?  (Leído 2,732 veces)
WHK
Moderador Global
***
Desconectado Desconectado

Mensajes: 6.606


Sin conocimiento no hay espíritu


Ver Perfil WWW
Como crear un nuevo cast explicito en c#?
« en: 17 Julio 2013, 16:38 pm »

Digamos que tengo lo siguiente:

Código:
string abc = "123456";

Para convertir en int debo utilizar convert:

Código:
int abcInt = Convert.ToInt32(abc);

El problema es que si no es numérico tengo una excepción en ves de retornar cero por lo tanto mi código final quedará así:

Código:
try{ int abcInt = Convert.ToInt32(abc); }catch(Exception e){ int abcInt = 0; }

Asi que en ves de eso decidí crear una librería que me convertía un objeto en numérico sin excepciones retornando cero si falló, de esta manera podría mantener una programación mas flexible sin tanto código basura:

Código:
int abcInt = Librerias.str.toInt(abc);

El código es el siguiente:

Código:
public int toInt(object buffer)
        {
            if (String.IsNullOrEmpty(buffer.ToString()))
                return 0;
            try
            {
                return Convert.ToInt32(System.Text.RegularExpressions.Regex.Replace(buffer.ToString(), "@[^Ee0-9\\.]+@i", ""));
            }
            catch (FormatException e)
            {
                return 0;
            }
        }

Pero quiero ir un paso mas allá y hacer algo como esto:

Código:
int abcInt = (safeInt)abc;

El problema es... como lo hago?, se que debo comenzar creando una librería llamada safeInt, ok está hecho y he averiguado al respecto, supe que debo utilizar:

Código:
	public class safeInt
{
public explicit operator int(object buffer) {

Pero no he encontrado la manera de obtener y devolver el valor necesitado obteniendo el objeto casteado. Intenté utilizar el constructor para devolver el valor pero no me resultó.

Alguien sabe si esto es posible desde c#? si es así entonces me gustaría crear un lote de librerías similares a las nativas (ojala extendidas pero no se como se pueden extender) creando una programación "no estricta" tal como lo hace de forma nativa php para aumentar la velocidad del desarrollo de la aplicación.

Al probar un simple cast:
Código:
int abcInt = (safeInt)abc;

Me ha dicho lo siguiente el visual studio:
Citar
No se puede convertir el tipo 'string' en 'Librerias.safeInt.safeInt'

Alguien sabe como hacer esto?


« Última modificación: 17 Julio 2013, 16:42 pm por WHK » En línea

Novlucker
Ninja y
Colaborador
***
Desconectado Desconectado

Mensajes: 10.683

Yo que tu lo pienso dos veces


Ver Perfil
Re: Como crear un nuevo cast explicito en c#?
« Respuesta #1 en: 17 Julio 2013, 18:49 pm »

La manera correcta ...
http://msdn.microsoft.com/en-us/library/system.int32.tryparse.aspx

Otra alternativa es crear una clase extensora

Y siguiendo con tu consulta específica ...
http://msdn.microsoft.com/en-us/library/xhbhezf4(v=vs.80).aspx

Saludos


« Última modificación: 17 Julio 2013, 19:17 pm por Novlucker » En línea

Contribuye con la limpieza del foro, reporta los "casos perdidos" a un MOD XD
"Hay dos cosas infinitas: el Universo y la estupidez  humana. Y de la primera no estoy muy seguro."
Albert Einstein
WHK
Moderador Global
***
Desconectado Desconectado

Mensajes: 6.606


Sin conocimiento no hay espíritu


Ver Perfil WWW
Re: Como crear un nuevo cast explicito en c#?
« Respuesta #2 en: 17 Julio 2013, 22:57 pm »

muchas gracias, me ha servido bastante :)

También encontré mas ayuda al respecto acá:
http://stackoverflow.com/questions/17705349/how-to-create-a-custom-cast-explicit-in-c
En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
roms de drem cast
Juegos y Consolas
DANIELC01 2 2,286 Último mensaje 8 Enero 2005, 04:26 am
por STRIKE
Utilizar un cast en c#
.NET (C#, VB.NET, ASP)
joalbela 3 4,491 Último mensaje 16 Marzo 2011, 20:34 pm
por Novlucker
cast en asm
ASM
rmdma() 2 3,246 Último mensaje 16 Febrero 2012, 18:01 pm
por _Enko
cast parametro null « 1 2 »
Programación Visual Basic
neo_from_cs_matrix 14 6,191 Último mensaje 6 Marzo 2012, 02:44 am
por Karcrack
Problema con Cast en Visual C
Programación C/C++
Karman 2 2,020 Último mensaje 4 Abril 2012, 03:13 am
por Karman
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines