Sé que hay otras preguntas como esta, pero no responden a mi pregunta.

En C #, usarías:

using System;

namespace Program
{
  static void Main(string[] args)
  {
    Console.WriteLine("Helllo, World);
    Console.ReadLine();
  }
}

Usas using System; por tener que hacer esto:

namespace Program
{
  static void Main(string[] args)
  {
    System.Console.WriteLine("Helllo, World);
    System.Console.ReadLine();
  }
}

En Java, ¿hay un equivalente a using System; de C #?

0
user10993431 4 feb. 2019 a las 17:06

2 respuestas

La mejor respuesta

Los comentarios abordan por qué las comunidades de estos idiomas se han decidido por diferentes enfoques, pero para responder a la pregunta directamente:

En Java, la instrucción import permite un sufijo * para indicar que todas las clases de un espacio de nombres deben ser importadas y utilizables dentro del archivo actual sin ningún prefijo:

import java.util.*;

Esto es básicamente equivalente a algo como

using System.Collections.Generic;

Sin embargo, la biblioteca estándar de Java y la biblioteca estándar de C # están organizadas de manera bastante diferente, por lo que no hay una declaración que sea exactamente igual a la de C # using System.

En Java, sin embargo, el paquete java.lang siempre se importa implícitamente, y java.lang contiene muchas cosas que estarían en System de C #, por lo que se podría decir que Java hace using System < em> implícito !

Por ejemplo, en C #, necesita using System; para poder escribir Console.WriteLine("Hello, World!");, pero en Java, no necesita import java.lang.System; para poder escribir System.out.println("Hello, world!");.

Java también tiene una función llamada import static, donde puede importar miembros de una clase en lugar de solo la clase en sí o las clases en un paquete. Entonces, podría hacer algo como import static java.lang.System.out; o import static java.lang.System.*; y luego escribir out.println("Hello, world!"); si lo prefiere.

C # también tiene una función llamada alias de espacio de nombres donde puede importar un solo nombre de otro espacio de nombres, opcionalmente renombrándolo sobre la marcha. Entonces podría escribir using C = System.Console; y luego escribir C.WriteLine("Hello, world!"); si lo prefiere.

Ambas últimas opciones no se usan comúnmente con la biblioteca estándar, pero pueden usarse en casos especiales, o con clases especiales que están diseñadas para usarse de esa manera.

1
Daniel Pryden 4 feb. 2019 a las 14:40

Anexo sobre:

... pero entonces ¿por qué las usuarias de C # usan declaraciones?

Simple: porque solo tienen using, y no importación de Java. Es una propiedad incorporada de ese lenguaje, similar al hecho de que C # admite la plataforma .Net y Java (principalmente) admite la plataforma JVM.

En otras palabras: diferentes lenguajes siguen diferentes paradigmas y conceptos, muy parecido a los lenguajes humanos "reales". Por lo tanto, en esencia, la pregunta why does language A support feature X, but language B has Y (a menudo, no siempre) no conduce a mucho más, sino "porque eso es lo que las personas individuales querían tener".

1
GhostCat 4 feb. 2019 a las 14:39