variable usa tipos tipo pero locales las inicializar implícito explícito ejemplos deben con como aprendizaje c# dictionary implicit explicit

usa - c#explícito e implícito



var c# (7)

Considera que tienes 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 puedes 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á destinada a usarse cuando la conversión no pierde precisión. La conversión explícita significa que puede perder algo de precisión y debe indicar claramente que sabe lo que está haciendo.

También hay un segundo contexto en el que se aplican 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

Entonces, cuando usa la implementación de la interfaz explícita, los métodos de la interfaz no son visibles cuando usa el tipo concreto. Esto se puede usar cuando la interfaz es una interfaz auxiliar, no es parte de la responsabilidad principal de la clase y no desea métodos adicionales para engañar a alguien que usa su código.

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 programar c #. Busqué en el diccionario el significado y esto es lo que obtuve:

Implícito

"Algo que es implícito se expresa de manera indirecta".

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

Explícito

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

"Si eres explícito acerca de algo, hablas de manera muy abierta y clara".

Me gustaría entenderlo en C #.

Gracias por tu ayuda.

Aclamaciones

información adicional:

Aquí hay una parte de la oración en el libro que estoy leyendo ahora que tiene esta palabra "implícita"

"Esto significa que el Área y los Ocupantes dentro de AreaPerPerson( ) refieren implícitamente a las copias de esas variables encontradas en el objeto que invoca a AreaPerPerson( ) "

No entiendo muy bien lo que esta frase aquí intenta decir.


Creo que implicit deja bastante en claro qué es una conversión implícita; es una en la que no es necesario que exprese explícitamente el valor en una asignación. Entonces, en lugar de hacer

myDigit = (Digit) myDouble

... puedes hacer

myDigit = myDouble;


En general

  • Implícito: algo se está haciendo por ti automáticamente.
  • Explícito: has escrito algo en el código fuente para indicar lo que quieres 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ícito y explícito se usan bastante en diferentes contextos, pero el significado general siempre estará en esa línea.

Tenga en cuenta que de vez en cuando los dos pueden unirse. Por ejemplo:

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

(Una conversión explícita es una que debe establecerse explícitamente; una versión implícita es una que se puede usar de manera implícita, es decir, sin que el código tenga que declararla).



Las palabras clave implicit y explicit en C # se utilizan al declarar operadores de conversión. Digamos que tienes la siguiente clase:

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

Si desea crear un nuevo Role y asignarle un Name , normalmente lo hará así:

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

Como solo tiene una propiedad, quizás sería conveniente si pudiéramos hacerlo de esta manera:

Role role = "RoleName";

Esto significa que queremos convertir implícitamente una cadena a un Role (ya que no hay una conversión específica involucrada en el código). Para lograr esto, agregamos un operador de conversión implícito:

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

Otra opción es implementar un operador de conversión explícito:

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

En este caso, no podemos convertir implícitamente una cadena a un Role , pero necesitamos convertirla en nuestro código:

Role r = (Role)"RoleName";


Se puede tomar implícito como implícito, pero explícito significa que usted declara que debe hacerlo usted mismo. Como con los moldes. Aquí hay un reparto implícito:

int implicit; implicit = 7.5;

El valor ''7.5'' se convertirá implícitamente como un int. Esto significa que el compilador lo hace por ti.

Aquí es explícito:

int explicit; explicit = (int)7.5;

Aquí le dices al compilador que quieres que lo lance. Usted declara explícitamente la conversión. Espero que ayude. Fuente: http://cboard.cprogramming.com/cplusplus-programming/24371-implicit-explicit.html


Ser explícito en C # se trata principalmente de mostrar sus intenciones de manera clara y sin ambigüedades.

Por ejemplo:

class MyClass { string myField; void MyMethod(int someNumber) { } }

En el código anterior, la visibilidad de la clase, el campo y el método están todos implícitos. Utilizan los valores por defecto del compilador.

Ahora, nunca puedo recordar cuáles son los valores predeterminados del compilador, y quizás sus colegas tampoco puedan, así que, en lugar de confiar en que todos recuerden cuáles son los valores predeterminados, puede ser explícito.

public class MyClass { private string myField; public void MyMethod(int someNumber) { } }