Pregunta

Soy nuevo en C# y estoy aprendiendo nuevas palabras.Me resulta difícil entender cuál es el significado de estas dos palabras cuando se trata de programación en C#.Busqué el significado en el diccionario y esto es lo que obtuve:

Implícito

"Algo que está implícito se expresa de forma indirecta".

"Si una cualidad o elemento está implícito en algo, está involucrado en ello o se muestra en ello";

Explícito

"Algo que es explícito se expresa o muestra de forma clara y abierta, sin ningún intento de ocultar nada"

"Si eres explícito sobre algo, hablas de ello de forma muy abierta y clara".

Me gustaría entenderlo en C#.

Gracias por tu ayuda.

Salud


información adicional:

Aquí hay una parte de la oración del libro que estoy leyendo ahora que tiene esta palabra "implícito".

"Esto significa que el área y los ocupantes dentro AreaPerPerson( ) implícitamente referirse a las copias de aquellas variables que se encuentran en el objeto que invoca AreaPerPerson( )"

No entiendo del todo lo que esta frase intenta decir aquí.

¿Fue útil?

Solución

El implicit y palabras clave explicit en C # se utilizan cuando se declara operadores de conversión. Digamos que usted tiene la siguiente clase:

public class Role
{
    public string Name { get; set; }
}

Si desea crear un nuevo Role y asignar un Name a ella, por lo general lo hará así:

Role role = new Role();
role.Name = "RoleName";

Ya que tiene sólo una propiedad, tal vez sería conveniente si en vez podríamos hacerlo de esta manera:

Role role = "RoleName";

Esto significa que queremos implícitamente Convertir una cadena a un Role (ya que no hay reparto específico involucrado en el código). Para lograr esto, le sumamos un operador de conversión implícita:

public static implicit operator Role(string roleName)
{
    return new Role() { Name = roleName };
}

Otra opción es poner en práctica un operador de conversión explícita:

public static explicit operator Role(string roleName)
{
    return new Role() { Name = roleName };
}

En este caso, no se puede convertir implícitamente una cadena a un Role, pero tenemos que echarlo en nuestro código:

Role r = (Role)"RoleName";

Otros consejos

En general

  • implícito: algo se está haciendo de forma automática
  • .
  • explícita:. Has escrito algo en el código fuente para indicar lo que desea que suceda

Por ejemplo:

int x = 10;
long y = x; // Implicit conversion from int to long
int z = (int) y; // Explicit conversion from long to int

implícitos y explícitos se utilizan mucho en diferentes contextos, pero el significado general siempre habrá a lo largo de esas líneas.

Tenga en cuenta que en ocasiones los dos pueden venir juntos. Por ejemplo:

int x = 10;
long y = (long) x; // Explicit use of implicit conversion!

(una conversión explícita es uno que ha que se indique explícitamente; una versión implícita es uno que puede usarse implícitamente, es decir, sin el código de tener que indicar ella. )

Tenga en cuenta que tiene dos clases:

internal class Explicit
{
    public static explicit operator int (Explicit a)
    {
        return 5;
    }
}


internal class Implicit
{
    public static implicit operator int(Implicit a)
    {
        return 5;
    }
}

y dos objetos:

var obj1 = new Explicit();
var obj2 = new Implicit();

ahora se puede escribir:

int integer = obj2; // implicit conversion - you don't have to use (int)

o

int integer = (int)obj1; // explicit conversion

pero:

int integer = obj1; // WON'T WORK - explicit cast required

La conversión implícita está destinado a ser utilizado cuando la conversión no pierde precisión. medios de conversión explícita, que se puede perder algo de precisión y debe indicar claramente que usted sabe lo que está haciendo.

También hay un segundo contexto en el que se aplican los términos implícitos / explícitos - implementación de la interfaz. No hay palabras clave en ese caso.

internal interface ITest
{
    void Foo();
}

class Implicit : ITest
{
    public void Foo()
    {
        throw new NotImplementedException();
    }
}

class Explicit : ITest
{
    void ITest.Foo() // note there's no public keyword!
    {
        throw new NotImplementedException();
    }
}

Implicit imp = new Implicit();
imp.Foo();
Explicit exp = new Explicit();
// exp.Foo(); // won't work - Foo is not visible
ITest interf = exp;
interf.Foo(); // will work

Así que cuando se utiliza la implementación de interfaz explícita, los métodos de la interfaz no son visibles cuando se utiliza el tipo de hormigón. Esto se puede utilizar cuando la interfaz es una interfaz de ayuda, no es parte de class'es responsabilidad primaria y que no quieren métodos adicionales para engañar a alguien que use su código.

este enlace hace que sea bastante claro lo que es una implícita conversión es - es una de las que no es necesario convertir explícitamente el valor de una asignación. Así, en lugar de hacerlo

myDigit = (Digit) myDouble 

... sólo puede hacer:

myDigit = myDouble;

Al ser explícita en C # es principalmente acerca de mostrar sus intenciones claramente y sin ambigüedad.

Por ejemplo:

class MyClass
{
    string myField;

    void MyMethod(int someNumber)
    {

    }
}

En el código anterior de la visibilidad de la clase, el campo y método son todos implícito. Ellos utilizan los valores por defecto del compilador.

Ahora, nunca puedo recordar lo que el compilador por defecto son, y tal vez sus colegas no pueden tampoco, así que en vez de confiar en todo el mundo para recordar lo que los valores por defecto son, puede ser explícita.

public class MyClass
{
    private string myField;

    public void MyMethod(int someNumber)
    {
    }
}

implícito se puede tomar como implícita, pero los medios explícitos que se Estado hay que hacerlo usted mismo. Al igual que con los moldes. Aquí está una conversión implícita:

int implicit;
implicit = 7.5;

El valor '7,5' implícitamente será echado como un int. Esto significa que el compilador lo hace por usted.

Aquí es explícito:

int explicit;
explicit = (int)7.5;

A continuación, se indica al compilador que desea echó. Se declara explícitamente la conversión. Espero que ayude. Fuente: http://cboard.cprogramming.com/cplusplus-programming/24371 -implicit-explicit.html

Este es un gran recurso para el aprendizaje de C #: http://www.functionx.com/csharp/

Tome un vistazo aquí específicamente: http://www.functionx.com/csharp /math/Lesson20.htm

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top