2011-08-22 19 views
6

IsNot Nothing es muy común, pero es una doble negación = o¿Agregar una palabra clave a VB.net? ("Existe" vs "IsNot Nada")

Me gustaría utilizar Exists lugar. ¿De alguna manera puedo agregar una palabra clave a mi vocabulario de VB?

Por ahora, escribí una extensión que agrega _Exists() como una propiedad para cada objeto. Lo uso con frecuencia, pero preferiría una palabra clave real.

<HideModuleName()> 
Public Module CustomExtensions 

    ''' <summary> 
    ''' Returns <c>True</c> if [object] is not <c>Nothing</c>; otherwise <c>False</c>. 
    ''' </summary> 
    <System.Runtime.CompilerServices.Extension()> 
    Public Function _Exists(obj As Object) As Boolean 
     Return obj IsNot Nothing 
    End Function 

End Module 

utilizo exclusivamente Visual Studio 2010, por lo que si podría engañar a VS en la conversión de mi fraseología personalizada en la sintaxis estándar, que trabajaría para mí.

Gracias!

+1

Es una buena idea usar un método de extensión en lugar del doble negativo IsNot Nothing. Me pregunto: ¿por qué el guión bajo? Además, tal vez HasValue sería un nombre más agradable; es el nombre que Microsoft usa para el método que verifica si un objeto Nullable tiene un valor. –

+0

Sí, debatí sobre eso, pero terminé usando el guión bajo porque me gusta la distinción visual entre 'Existe' y el objeto real que se está probando, particularmente en casos donde el objeto ya contenía una serie de puntos (por ejemplo, una propiedad de propiedad de un objeto). De hecho, tengo otra extensión llamada 'HasValue' que uso para cadenas, que es igual a' Not String.IsNullOrEmpty'. Sin embargo, un buen punto sobre el método incorporado de Microsoft, no lo había considerado. –

+0

Mis 2 centavos: no cambian el idioma. El lenguaje es un modo de comunicación y no puedes comunicarte si creas tu propio dialecto que nadie más conoce. ¿Qué pasa si recibió código con la palabra clave 'Reset'? Qué significa eso? ¿Qué hace? ¿Cómo lo agregarías a Visual Studio? –

Respuesta

5

Esta respuesta no es muy útil, pero aquí va: actualmente, no puede hacer esto.

Las versiones futuras de VS (especialmente cuando lanzan sus partes internas del servicio de compilación y las hacen extensibles) podrían permitirlo, aunque dudo que permitan añadir nuevas palabras clave, ya que esto no favorece a un proveedor de compiladores que quiere garantizar un ecosistema de código compatible.

+0

hm, eso es bastante sorprendente dado todo lo que los mods VS * pueden * hacer. Ah bueno. ¿Han anunciado realmente que lanzarán esos detalles del compilador en algún momento? –

+1

@ J.Steve No estoy seguro de que haya un anuncio oficial, pero cierta información ha sido "filtrada" por los desarrolladores, p. [Eric Lippert] (http://blogs.msdn.com/b/ericlippert/archive/2010/12/16/hiring-for-roslyn.aspx). –

Cuestiones relacionadas