martes, 5 de julio de 2016

introducción




Las siglas POO se corresponden con Programación Orientada a Objetos, aunque muchas veces las podemos encontrar escritas en inglés OOP (Object Oriented Programming).
La Programación Orientada a Objetos trata de utilizar una visión real del mundo dentro de nuestros programas. La visión que se tiene del mundo dentro de la POO es que se encuentra formado por objetos. Para comprender bien la POO debemos olvidar un poco la Programación Estructurada, que si nos fijamos bien es algo artificial, la POO es una forma de abordar los problemas más natural. Aquí natural significa más en contacto con el mundo real que nos rodea, de esta forma si queremos resolver un problema determinado, debemos identificar cada una de las partes del problema con objetos presentes en el mundo real.

objeto 

La Programación Orientada a Objetos (POO u OOP por sus siglas en inglés), es un paradigma de programación.
Paradigma: teoría cuyo núcleo central [...] suministra la base y modelo para resolver problemas [...] (Definición de la Real Academia Española, vigésimo tercera edición)
Cómo tal, nos enseña un método -probado y estudiado- el cual se basa en las interacciones de objetos (todo lo descrito en el título anterior, Pensar en objetos) para resolver las necesidades de un sistema informático.
Básicamente, este paradigma se compone de 6 elementos y 7 características que veremos a continuación.

características

Los elementos de la POO, pueden entenderse como los materiales que necesitamos para diseñar y programar un sistema, mientras que las características, podrían asumirse como las herramientas de las cuáles disponemos para construir el sistema con esos materiales.
Entre los elementos principales de la POO, podremos encontrar a:

5.2.1.1. Clases

Las clases son los modelos sobre los cuáles se construirán nuestros objetos. Podemos tomar como ejemplo de clases, el gráfico que hicimos en la página 8 de este documento.
En Python, una clase se define con la instrucción class seguida de un nombre genérico para el objeto.


clases 



En informática, una clase es una plantilla para la creación de objetos de datos según un modelo predefinido. Las clases se utilizan para representar entidades o conceptos, como los sustantivos en el lenguaje. Cada clase es un modelo que define un conjunto de variables -el estado, y métodos apropiados para operar con dichos datos -el comportamiento. Cada objeto creado a partir de la clase se denomina instancia de la clase.
Las clases son un pilar fundamental de la programación orientada a objetos. Permiten abstraer los datos y sus operaciones asociadas al modo de una caja negra. Los lenguajes de programación que soportan clases difieren sutilmente en su soporte para diversas características relacionadas con clases. La mayoría soportan diversas formas de herencia. Muchos lenguajes también soportan características para proporcionar encapsulación, como especificadores de acceso.
Una clase también puede tener una representación (metaobjeto) en tiempo de ejecución, que proporciona apoyo en tiempo de ejecución para la manipulación de los metadatos relacionados con la clase.

 


identificación de los elementos de la poo

La POO ( Programación Orientada a Objetos) se puede definir como “un método de implementación en el que los programas se organizan como colecciones cooperativas de objetos, cada uno de los cuales representan una instancia de alguna clase, y cuyas clases son todas miembros de una jerarquía de clases unidas mediante relaciones de herencia”.
Existen tres importantes partes en la definición: la programación orientada a objetos 1) utiliza objetos, no algoritmos, como bloques de construcción lógicos; 2) cada objeto es una instancia de una clase; 3) las clases se relacionan unas con otras por medio de relaciones de herencia.
Es importante remarcar que si alguna de estas características no se cumple no se trata de programación orientada a objetos. Por ejemplo, la programación si herencia es distinta de la POO y se le denomina programación con tipos abstractos de datos programación basada en objetos. Por ejemplo, en las primeras versiones de PowerBuilder ( I, II y III ) no se trataba de un lenguaje totalmente orientado a objetos ya que no se podían heredar clases, así que fue denominado un LPBO ( Lenguaje de Programación Basado en Objetos). No fue hasta la versión IV que paso a ser un LPOO ( Lenguaje de programación Orientado a Objetos).
Los conceptos fundamentales de la POO son: objetos, clases, herencia, mensajes y polimorfismo.

 características 

  • Abstracción: Cada objeto en el sistema sirve como modelo de un “agente” abstracto que puede realizar trabajo, informar y cambiar su estado, y “comunicarse” con otros objetos en el sistema sin revelar cómose implementan estas características. Los procesos, las funciones o los métodos pueden también ser abstraídos y cuando lo están, una variedad de técnicas son requeridas para ampliar una abstracción.
  • Encapsulamiento: Significa reunir a todos los elementos que pueden considerarse pertenecientes a una misma entidad, al mismo nivel de abstracción. Esto permite aumentar la cohesión de los componentes del sistema. Algunos autores confunden este concepto con el principio de ocultación, principalmente porque se suelen emplear conjuntamente.
  • Principio de ocultación: Cada objeto está aislado del exterior, es un módulo natural, y cada tipo de objeto expone una interfaz a otros objetos que especifica cómo pueden interactuar con los objetos de la clase. El aislamiento protege a las propiedades de un objeto contra su modificación por quien no tenga derecho a acceder a ellas, solamente los propios métodos internos del objeto pueden acceder a su estado. Esto asegura que otros objetos no pueden cambiar el estado interno de un objeto de maneras inesperadas, eliminando efectos secundarios e interacciones inesperadas. Algunos lenguajes relajan esto, permitiendo un acceso directo a los datos internos del objeto de una manera controlada y limitando el grado de abstracción. La aplicación entera se reduce a un agregado o rompecabezas de objetos.
  • Polimorfismo: comportamientos diferentes, asociados a objetos distintos, pueden compartir el mismo nombre, al llamarlos por ese nombre se utilizará el comportamiento correspondiente al objeto que se esté usando. O dicho de otro modo, las referencias y las colecciones de objetos pueden contener objetos de diferentes tipos, y la invocación de un comportamiento en una referencia producirá el comportamiento correcto para el tipo real del objeto referenciado. Cuando esto ocurre en “tiempo de ejecución”, esta última característica se llama asignación tardía o asignación dinámica. Algunos lenguajes proporcionan medios más estáticos (en “tiempo de compilación”) de polimorfismo, tales como las plantillas y lasobrecarga de operadores de C++.
  • Herencia: las clases no están aisladas, sino que se relacionan entre sí, formando una jerarquía de clasificación. Los objetos heredan las propiedades y el comportamiento de todas las clases a las que pertenecen. La herencia organiza y facilita el polimorfismo y el encapsulamiento permitiendo a los objetos ser definidos y creados como tipos especializados de objetos preexistentes. Estos pueden compartir (y extender) su comportamiento sin tener que reimplementar su comportamiento. Esto suele hacerse habitualmente agrupando los objetos en clases y estas en árboles o enrejados que reflejan un comportamiento común. Cuando un objeto hereda de más de una clase se dice que hay herencia múltiple; esta característica no está soportada por algunos lenguajes (como Java).

identificación de los elementos de la programación dirigida por eventos


La programación dirigida por eventos es un paradigma de programación en el que tanto la estructura como la ejecución de los programas van determinados por los sucesos que ocurran en el sistema, definidos por el usuario o que ellos mismos provoquen.
Para entender la programación dirigida por eventos, podemos oponerla a lo que no es: mientras en la programación secuencial (o estructurada) es el programador el que define cuál va a ser el flujo del programa, en la programación dirigida por eventos será el propio usuario —o lo que sea que esté accionando el programa— el que dirija el flujo del programa. Aunque en la programación secuencial puede haber intervención de un agente externo al programa, estas intervenciones ocurrirán cuando el programador lo haya determinado, y no en cualquier momento como puede ser en el caso de la programación dirigida por eventos.
El creador de un programa dirigido por eventos debe definir los eventos que manejarán su programa y las acciones que se realizarán al producirse cada uno de ellos, lo que se conoce como el administrador de evento. Los eventos soportados estarán determinados por el lenguaje de programación utilizado, por el sistema operativo e incluso por eventos creados por el mismo programador.
En la programación dirigida por eventos, al comenzar la ejecución del programa se llevarán a cabo las inicializaciones y demás código inicial y a continuación el programa quedará bloqueado hasta que se produzca algún evento. Cuando alguno de los eventos esperados por el programa tenga lugar, el programa pasará a ejecutar el código del correspondiente administrador de evento. Por ejemplo, si el evento consiste en que el usuario ha hecho clic en el botón de play de un reproductor de películas, se ejecutará el código del administrador de evento, que será el que haga que la película se muestre por pantalla.
Un ejemplo claro lo tenemos en los sistemas de programación Lexico y Visual Basic, en los que a cada elemento del programa (objetos, controles, etcétera) se le asignan una serie de eventos que generará dicho elemento, como la pulsación de un botón del ratón sobre él o el redibujado del control.


concepto y características visual basic


Visual Basic es un lenguaje de programación dirigido por eventos, desarrollado por Alan Cooper para Microsoft. Este lenguaje de programación es un dialecto deBASIC, con importantes agregados. Su primera versión fue presentada en 1991, con la intención de simplificar la programación utilizando un ambiente de desarrolloque facilitó en cierta medida la programación misma.
La última versión fue la 6, liberada en 1998, para la que Microsoft extendió el soporte hasta marzo de 2008.
En 2001 Microsoft propuso abandonar el desarrollo basado en la API Win32 y pasar a un framework o marco común de librerías, independiente de la versión del sistema operativo, .NET Framework, a través de Visual Basic .NET (y otros lenguajes como C Sharp (C#) de fácil transición de código entre ellos); fue el sucesor de Visual Basic 6.
Aunque Visual Basic es de propósito general, también provee facilidades para el desarrollo de aplicaciones de bases de datos usando Data Access ObjectsRemote Data Objects o ActiveX Data Objects.
Visual Basic contiene un entorno de desarrollo integrado o IDE que integra editor de textos para edición del código fuente, un depurador, un compilador (y enlazador) y un editor de interfaces gráficas o GUI.


características

 

Los compiladores de Visual Basic generan código que requiere una o más librerías de enlace dinámico para que funcione, conocidas comúnmente como DLL (sigla en inglés de dynamic-link library ); en algunos casos reside en el archivo llamado MSVBVMxy.DLL (siglas de "MicroSoft Visual Basic Virtual Machine x.y", donde x.y es la versión) y en otros en VBRUNXXX.DLL ("Visual Basic Runtime X.XX"). Estas bibliotecas DLL proveen las funciones básicas implementadas en el lenguaje, conteniendo rutinas en código ejecutable que son cargadas bajo demanda en tiempo de ejecución. Además de las esenciales, existe un gran número de bibliotecas del tipo DLL con variedad de funciones, tales como las que facilitan el acceso a la mayoría de las funciones del sistema operativo o las que proveen medios para la integración con otras aplicaciones.
Dentro del mismo Entorno de desarrollo integrado (IDE) de Visual Basic se puede ejecutar el programa que esté desarrollándose, es decir en modo intérprete (en realidad pseudo-compila el programa muy rápidamente y luego lo ejecuta, simulando la función de un intérprete puro). Desde ese entorno también se puede generar el archivo en código ejecutable (exe); ese programa así generado en disco puede luego ser ejecutado sin requerir del ambiente de programación (incluso en modo stand alone), aunque sí será necesario que las librerías DLL requeridas por la aplicación desarrollada se encuentren también instaladas en el sistema para posibilitar su ejecución.
El propio Visual Basic provee soporte para empaquetado y distribución; es decir, permite generar un módulo instalador que contiene al programa ejecutable y las bibliotecas DLL necesarias para su ejecución. Con ese módulo la aplicación desarrollada se distribuye y puede ser instalada en cualquier equipo (que tenga un sistema operativo compatible).
Así como bibliotecas DLL, hay numerosas aplicaciones desarrolladas por terceros que permiten disponer de variadas y múltiples funciones, incluso mejoras para el propio Visual Basic; las hay también para el empaquetado y distribución, y hasta para otorgar mayor funcionalidad al entorno de programación (IDE)

concepto y características de java script


JavaScript (abreviado comúnmente JS) es un lenguaje de programación interpretado, dialecto del estándar ECMAScript. Se define como orientado a objetos,3basado en prototiposimperativo, débilmente tipado y dinámico.
Se utiliza principalmente en su forma del lado del cliente (client-side), implementado como parte de un navegador web permitiendo mejoras en la interfaz de usuario ypáginas web dinámicas4 aunque existe una forma de JavaScript del lado del servidor (Server-side JavaScript o SSJS). Su uso en aplicaciones externas a la web, por ejemplo en documentos PDF, aplicaciones de escritorio (mayoritariamente widgets) es también significativo.
JavaScript se diseñó con una sintaxis similar a C, aunque adopta nombres y convenciones del lenguaje de programación Java. Sin embargo, Java y JavaScript tienen semánticas y propósitos diferentes.
Todos los navegadores modernos interpretan el código JavaScript integrado en las páginas web. Para interactuar con una página web se provee al lenguaje JavaScript de una implementación del Document Object Model (DOM).
Tradicionalmente se venía utilizando en páginas web HTML para realizar operaciones y únicamente en el marco de la aplicación cliente, sin acceso a funciones delservidor. Actualmente es ampliamente utilizado para enviar y recibir información del servidor junto con ayuda de otras tecnologías como AJAX. JavaScript se interpreta en el agente de usuario al mismo tiempo que las sentencias van descargándose junto con el código HTML.
Desde el lanzamiento en junio de 1997 del estándar ECMAScript 1, han existido las versiones 2, 3 y 5, que es la más usada actualmente (la 4 se abandonó5 ). En junio de 2015 se cerró y publicó la versión ECMAScript 


características


JavaScript es compatible con gran parte de la estructura de programación de C (por ejemplo, sentencias if, bucles for, sentencias switch, etc.). Con una salvedad, en parte: en C, el ámbito de las variables alcanza al bloque en el cual fueron definidas; sin embargo JavaScript no es compatible con esto, puesto que el ámbito de las variables es el de la función en la cual fueron declaradas. Esto cambia con la versión de JavaScript 1.7, ya que añade compatibilidad con block scoping por medio de la palabra clave let. Como en C, JavaScript hace distinción entre expresiones y sentencias. Una diferencia sintáctica con respecto a C es la inserción automática de punto y coma, es decir, en JavaScript los puntos y coma que finalizan una sentencia pueden ser omitidos.
Tipado dinámico
Como en la mayoría de lenguajes de scripting, el tipo está asociado al valor, no a la variable. Por ejemplo, una variable x en un momento dado puede estar ligada a un número y más adelante, religada a unacadena. JavaScript es compatible con varias formas de comprobar el tipo de un objeto, incluyendo duck typing.23 Una forma de saberlo es por medio de la palabra clave typeof.
Evaluación en tiempo de ejecución
JavaScript incluye la función eval que permite evaluar expresiones como expresadas como cadenas en tiempo de ejecución. Por ello se recomienda que eval sea utilizado con precaución y que se opte por utilizar la función JSON.parse() en la medida de lo posible, pues resulta mucho más segura.

Funcional

Funciones de primera clase
A las funciones se les suele llamar ciudadanos de primera clase; son objetos en sí mismos. Como tal, poseen propiedades y métodos, como .call() y .bind().24 Una función anidada es una función definida dentro de otra. Esta es creada cada vez que la función externa es invocada. Además, cada función creada forma una clausura; es el resultado de evaluar un ámbito conteniendo en una o más variables dependientes de otro ámbito externo, incluyendo constantes, variables locales y argumentos de la función externa llamante. El resultado de la evaluación de dicha clausura forma parte del estado interno de cada objeto función, incluso después de que la función exterior concluya su evaluación.
Prototipos
JavaScript usa prototipos en vez de clases para el uso de herencia.26 Es posible llegar a emular muchas de las características que proporcionan las clases en lenguajes orientados a objetos tradicionales por medio de prototipos en JavaScript.
Entorno de ejecución
JavaScript normalmente depende del entorno en el que se ejecute (por ejemplo, en un navegador web) para ofrecer objetos y métodos por los que los scripts pueden interactuar con el "mundo exterior". De hecho, depende del entorno para ser capaz de proporcionar la capacidad de incluir o importar scripts (por ejemplo, en HTML por medio del tag <script>). (Esto no es una característica del lenguaje, pero es común en la mayoría de las implementaciones de JavaScript.)
Funciones variádicas
Un número indefinido de parámetros pueden ser pasados a la función. La función puede acceder a ellos a través de los parámetros o también a través del objeto local arguments. Las funciones variádicastambién pueden ser creadas usando el método .apply().
Funciones como métodos
A diferencia de muchos lenguajes orientados a objetos, no hay distinción entre la definición de función y la definición de método. Más bien, la distinción se produce durante la llamada a la función; una función puede ser llamada como un método. Cuando una función es llamada como un método de un objeto, la palabra clave this, que es una variable local a la función, representa al objeto que invocó dicha función.
Arrays y la definición literal de objetos
Al igual que muchos lenguajes de script, arrays y objetos (arrays asociativos en otros idiomas) pueden ser creados con una sintaxis abreviada. De hecho, estos literales forman la base del formato de datosJSON.
Expresiones regulares
JavaScript también es compatible con expresiones regulares de una manera similar a Perl, que proporcionan una sintaxis concisa y poderosa para la manipulación de texto que es más sofisticado que las funciones incorporadas a los objetos de tipo string.

concepto y características de java


Java es un lenguaje de programación con el que podemos realizar cualquier tipo de programa. En la actualidad es un lenguaje muy extendido y cada vez cobra más importancia tanto en el ámbito de Internet como en la informática en general. Está desarrollado por la compañía Sun Microsystems con gran dedicación y siempre enfocado a cubrir las necesidades tecnológicas más punteras.

características


Una de las principales características por las que Java se ha hecho muy famoso es que es un lenguaje independiente de la plataforma. Eso quiere decir que si hacemos un programa en Java podrá funcionar en cualquier ordenador del mercado. Es una ventaja significativa para los desarrolladores de software, pues antes tenían que hacer un programa para cada sistema operativo, por ejemplo Windows, Linux, Apple, etc. Esto lo consigue porque se ha creado una Máquina de Java para cada sistema que hace de puente entre el sistema operativo y el programa de Java y posibilita que este último se entienda perfectamente.
La independencia de plataforma es una de las razones por las que Java es interesante para Internet, ya que muchas personas deben tener acceso con ordenadores distintos. Pero no se queda ahí, Java está desarrollándose incluso para distintos tipos de dispositivos además del ordenador como móviles, agendas y en general para cualquier cosa que se le ocurra a la industria.

concepto y características de visual C++


C++ es un lenguaje de programación orientado a objetos que toma la base del lenguaje C y le agrega la capacidad de abstraer tipos como en Smalltalk.
La intención de su creación fue el extender al exitoso lenguaje de programación C con mecanismos que permitieran la manipulación de objetos. En ese sentido, desde el punto de vista de los lenguajes orientados a objetos, el C++ es un lenguaje híbrido [¿por? fusionar con el siguiente].
Posteriormente se añadieron facilidades de programación genérica, que se sumó a los otros dos paradigmas que ya estaban admitidos (programación estructurada y la programación orientada a objetos). Por esto se suele decir que el C++ es un lenguaje de programación multiparadigma.

características

  • Una librería de clases MFC, que da soporte a los objetos Windows tales como las ventanas, cajas de dialogo, mensajes, controles y objetos GDI (Graphic Device Interface), como lápices, pinceles, fuentes e imágenes.
  • Soporte para integración de datos con otras aplicaciones.
  • Soporte para objetos incrustados y enlazados que permite enlazar información de otras aplicaciones Windows.
  • Interfaz para múltiples documentos que permite crear una aplicación con una ventana de aplicación y múltiples ventanas de documentos.
  • Soporte para establecer enlaces con Windows y con rutinas escritas en otros lenguajes.
  • Un entorno de desarrollo integrado (editor, compilador, depurador, analizador, etc).
  • Soporte a la programación a través de las herramientas Appwizard y Classwizard.
  • Soporte para dibujar la interfaz gráfica del usuario a través de Appstudio que incluye un editor de diálogos, un editor de menús y un editor de gráficos.
  • Soporte para conectarse a diferentes bases de datos.
  • Cabeceras precombinadas que reducen el tiempo de compilación.

lunes, 4 de julio de 2016

Concepto y características de visual.net

Visual Basic .NET (VB.NET) es un lenguaje de programación orientado a objetos que se puede considerar una evolución de Visual Basic implementada sobre el framework .NET. Su introducción resultó muy controvertida, ya que debido a cambios significativos en el lenguaje VB.NET no es retro compatible con Visual Basic, pero el manejo de las instrucciones es similar a versiones anteriores de Visual Basic, facilitando así el desarrollo de aplicaciones más avanzadas con herramientas modernas. Para mantener eficacia en el desarrollo de las aplicaciones. La gran mayoría de programadores de VB.NET utilizan el entorno de desarrollo integrado Microsoft Visual Studio en alguna de sus versiones (desde el primer Visual Studio .NET hasta Visual Studio .NET 2015, que es la última versión de Visual Studio para la plataforma .NET), aunque existen otras alternativas, comoSharpDevelop (que además es libre).
Al igual que con todos los lenguajes de programación basados en .NET, los programas escritos en VB .NET requieren el Framework .NET o Mono para ejecutarse.

características

En los siguientes temas se presentan y se describen los componentes básicos de Visual Basic, un lenguaje de programación orientado a objetos.  Tras crear la interfaz de usuario de su aplicación utilizando formularios y controles, debe escribir el código que define el comportamiento de la aplicación.  Al igual que cualquier otro lenguaje de programación moderno, Visual Basic admite varios elementos de lenguaje y construcciones de programación comunes.  
Si ha programado en otros lenguajes, gran parte del material que se trata en esta sección le resultará familiar.  Aunque la mayoría de las construcciones son similares a las de otros lenguajes, el modelo orientado a eventos de Visual Basic presenta algunas diferencias sutiles.  
Si es un programador principiante, el material tratado en esta sección le servirá como introducción a los bloques de creación básicos para escribir código.  Una vez que comprenda los conceptos básicos, podrá crear aplicaciones eficaces mediante Visual Basic.  
concepto y características de c #



A continuación enumeramos las principales características que definen al lenguaje de programación C#. Algunas de estas características no son propias del lenguaje, sino de la plataforma .NET, aunque se listan aquí ya que tienen una implicación directa en ellenguaje.
Sencillez de uso
 C# elimina muchos elementos añadidos por otros lenguajes y quefacilitan su uso y compresión, como por ejemplo ficheros de cabecera, oficheros fuentes IDL.1. Es por ello que se dice que C# esautocontenido. Además, no se incorporan al lenguaje elementos pocoútiles, como por ejemplo macros, herencia múltiple u operadoresdiferentes al operador de aceso a métodos (operador punto) paraacceder a miembros de espacios de nombres.
Modernidad
 Al ser C# un lenguaje de última generación, incorpora elementos que seha demostrado a lo largo del tiempo que son muy útiles para elprogramador, como tipos decimales o
booleanos
, un tipo básico
string
,así como una instrución que permita recorrer colecciones con facilidad(instrucción
foreach
). Estos elementos hay que simularlos en otroslenguajes como C++ o Java.
Orientado a objetos
 C# como lenguaje de última generación, y de propósito general, esorientado a objetos. C# no permite la inclusión de funciones ni variablesglobales que no estén incluidos en una definición de tipos, por lo que laorientación a objetos es más pura y clara que en otros lenguajes comoC++. Además, C# soporta todas las características del paradigma de laprogramación orientada a objetos, como son la
encapsulación, laherencia
y el
 polimorfismo
.
Orientado a componentes
 La propia sintasix de C# incluye elementos propios del diseño decomponentes que otros lenguajes tienen que simular. La sintaxis de C#incluye por ejemplo formas de definir
 propiedades
,
eventos
o
atributos
.
Recolección de basura
 Como ya se comentó, todo lenguaje incluido en la plataforma .NET tienea su disposición el recolector de basura del CLR. Esto implica que no esnecesario incluir instrucciones de destrucción de objetos en el lenguaje.
Seguridad de tipos
 C# incluye mecanismos de control de acceso a tipos de datos, lo quegarantiza que no se produzcan errores difíciles de detectar como unacceso a memoria de ningún objeto, por ejemplo. Para ello, el lenguajeprovee de una serie de normas de sintaxis, como por ejemplo no realizarconversiones entre tipos que no sean compatibles. Además, no sepueden usar variables no inicializadas previamente, y en el acceso atablas se hace una comprobación de rangos para que no se excedanninguno de los índices de la misma. Se puede controlar así mismo los
desbordamientos en operaciones aritméticas, produciéndoseexcepciones cuando se produzcan.
Instrucciones seguras
 Para evitar errores comunes como se producían programando en otroslenguajes, en C# se han impuesto una serie de restricciones en el uso deinstrucciones de control más comunes. Por ejemplo, la evaluación detoda condición ha de ser una expresión condicional y no aritmética,como ocurría por ejemplo en C o en C++. Así se evitan errores porconfusión del operador igualdad con el de asignación. Otra restricciónque se impone en la instrucción de selección
switch
, imponiendo quetoda selectora de la instrucción finalice con una instrucción
break 
o
goto
que indique cuál es la siguiente acción a realizar.
Unificación de tipos
 En C# todos los tipos derivan de una superclase común llamada
System.Object 
, por lo que automáticamente heredarán todos losmiembros definidos en esta clase. Es decir, son
objetos
. A diferencia de Java, en C# esta característica también se aplica para los tipos básicos.
Extensión de los operadores básicos
 Para facilitar la legibilidad de código y conseguir que los nuevos tipos dedatos que se definan a través de las estructuras estén al mismo nivelque los elementos predefinidos en el lenguaje, al igual que C++ pero adiferencia de Java, C# permite redefinir el significado de la mayoría delos operadores (incluidos el de la conversión) cuando se apliquen adiferentes tiops de objetos.
Las redefiniciones de operadores se hacen de manera inteligente, de modo que a partir de una única definición de los operadores
++
y
-
el compilador puede deducir automáticamente cómo ejecutarlos de manera prefija y postfija. Definiendooperadores simples como la suma, el compilador deduce como aplicar la versión deasignación compuesta (
+=
). Además, para asegurar la consistencia, el compilador exige que los operadores con opuesto (como por ejemplo el operador igualdad
==
ysu opuesto
!=
) siempre se redefinan por parejas.
Extensión de modificadores
 C# ofrece, a través de los
atributos
, la posiblidad de añadir a losmetadatos del módulo resultante de la compilación de cualquier fuenteinformación adicional a la generada por el compilador que luego podráser consultada en tiempo de ejecución a través de la biblioteca dereflexión de .NET.
Eficiente
 En C#, todo el código incluye numerosas restricciones para garantizar suseguridad, no permitiendo el uso de punteros. Sin embargo, y adiferencia de Java, existen modificadores para saltarse esta restricción,pudiendo manipular objetos a través de punteros. Para ello bastaidentificar regiones de código con el identificador
unsafe
, y podránusarse en ellas punteros de forma similar a como se hace en C++. Estacaracterística puede resultar de utilidad en situaciones en las que senecesite gran velocidad de procesamiento.
Compatible
 Para facilitar la migración de programadores de C++ o Java a C#, nosólo se mantiene una sintaxis muy similar a la de los dos anterioreslenguajes, sino que el CLR también ofrece la posiblidad de acceder acódigo nativo escrito como funciones sueltas no orientadas a objetos,tales como las DLLs de la API de Win32