Es muy divertido, pero no pude encontrar una respuesta por mi cuenta. ¿Cómo puedo desarmar la variable? P.ej. php tiene la función unset ($ var).Cómo: deshacer la variable en C#?
Respuesta
En realidad no hay un equivalente a "desactivada".
Lo más parecido que sé es el uso de la palabra clave default.
Por ejemplo:
MyType myvar = default(MyType);
string a = default(string);
La variable todavía se "ajuste", pero va a tener su valor por defecto.
No puede. No hay idea de "deshacer" una variable. Puede establecerlo en un valor diferente: 0, nulo, lo que sea apropiado. Las variables de instancia/estáticas ni siquiera tienen un concepto de si la variable está configurada/no configurada, y las variables locales solo tienen "definitivamente asignado" o "no asignado definitivamente".
¿Qué es lo que estás tratando de lograr?
El uso más importante para unset() en PHP es desarmar variables que no están definidas en un alcance (función o clase), IMO. Por eso, C# no necesita ser desarmado de la misma manera que PHP. :) – hangy
Tal vez desea liberar el objeto que la variable hace referencia a:
MyVar = null;
Nota: no está garantizado que elimine el objeto al que apuntaba 'MyVar'. – Joe
En general, establecerlo en null hace el trabajo (para la variable de tipos como int, tendría que convertirla en una versión con nulos para int?).
Si sólo desea utilizar la variable por un corto período de tiempo en una función grande puede ámbito de aplicación que, de esta manera:
{
int i = 2;
}
La variable sólo durará hasta la llave de cierre.
Si esto no cubre su circunstancia, ¿puede detallar dónde necesita hacer esto?
Las variables de tipo valor no necesitan unset. Están asignados permanentemente.
Para las variables de tipo de referencia, simplemente configúrelas en nulo y el recolector de basura destruirá el objeto asociado (y liberará la memoria). Pero tenga en cuenta que la variable en sí seguirá existiendo en todo su alcance (bloque de código, método, vida útil, ...)
Si desea utilizar esto para liberar memoria, simplemente configure todos los objetos no necesarios como nulos y esperar a que el recolector de basura haga su trabajo.
Editar: Como se señala en los comentarios, omito decir que el recolector de basura no iniciará la recolección inmediatamente. Esto sucederá generalmente cuando el marco intenta asignar memoria y no puede encontrar suficiente libre. Es posible iniciar "manualmente" una recolección de basura, pero no es aconsejable y podría empeorar el comportamiento del programa. Para la mayoría de los propósitos, el comportamiento predeterminado del GC debería ser suficiente.
El objeto se destruirá tan pronto como haya una variable * no * que proporcione una referencia a él más. – hangy
@hangy: No es tan simple como eso. La memoria del objeto solo se liberará la próxima vez que se ejecute el GC (para esa generación), no tan pronto como no haya ninguna variable que se refiera a él. Hay otras complicaciones tales como referencias circulares (no es un problema) y finalización. ¡300 caracteres no es suficiente! –
300 caracteres no es suficiente, a la derecha. :) Acabo de agregar esto porque, simplemente usando la respuesta de rslite, uno podría pensar que el objeto se va tan pronto como una variable se establece en nulo. Estás en lo correcto, por supuesto, no siempre es tan simple como eso. – hangy
Para que un objeto se puede establecer en null, una cadena se ajusta mejor a String.Empty, o se puede declarar una variable como anulable, tales como:
int? i = null;
¿Qué te hace decir que una cadena está mejor configurada para string.Empty? Depende completamente de lo que quieras lograr. Rara vez necesito hacer algo como esto de todos modos, pero cuando lo hago usualmente uso null para cadenas. ¿Por qué pretender que tienes una referencia a un objeto significativo? –
Se podría definir un ámbito de esa variable .Cuando se sale del alcance, ya no se puede definir la variable:
System.Console.WriteLine("let's give this a try: ");
{
int j = 0;
System.Console.WriteLine(j);
}
//Won't compile with the following line.
//System.Console.WriteLine(j);
personalmente solo voy
variable = Nada
que parece liberar los recursos, especialmente cuando se trabaja con los teléfonos móviles !
seguro, simplemente no espere obtener un valor verdadero de IsNothing (variable)! – ekkis
Para variable de entorno unset utilizar el mismo método Environment.SetEnvironmentVariable, pero pase null, o String.Empty como un valor http://msdn.microsoft.com/en-us/library/96xafkes(v=vs.110).aspx
"Si el valor está vacío y existe la variable de entorno denominada por la variable, el entorno la variable se elimina ".
No creo que el OP se refiera a variables de entorno. OTOH: No conozco PHP, ¿entonces tal vez este tipo de variable _sea_ variables de entorno? –
- 1. Cómo deshacer la cadena Unicode en C#
- 2. ¿Cómo creo "deshacer" en C++?
- 3. Cómo deshacer '&' en Jade
- 4. Cómo deshacer la actualización RequestFactory
- 5. Cómo deshacer event.stopPropagation en jQuery?
- 6. Cómo deshacer la eliminación de archivos intermedios
- 7. ¿Cómo funciona una variable en C/C++?
- 8. Deshacer eliminar en GIT
- 9. Deshacer
- 10. Cómo deshacer bzr add
- 11. Cómo deshacer `hg pull`?
- 12. ¿Cómo implementar la funcionalidad de deshacer?
- 13. cómo deshacer la actualización git submódulo
- 14. cómo deshacer commit
- 15. cómo deshacer la actualización del paquete
- 16. ¿Cómo funciona Deshacer?
- 17. Deshacer en Vinculaciones WPF
- 18. "Deshacer elimina" en la aplicación weba?
- 19. Git: Cómo "deshacer" una fusión
- 20. imprimir nombre de la variable en C#
- 21. Deshacer en Subversion
- 22. Deshacer desprotección de la subcarpeta en TortoiseSVN
- 23. ¿Qué significa "variable | variable" en C++?
- 24. Cómo inicializar la variable local de subprocesos en C++?
- 25. Cómo usar la variable estática (BOOL) en el Objetivo C
- 26. Cómo definir la variable C++ preprocesador en Makefile
- 27. ¿Cómo cambio la variable OutDir en Visual C++?
- 28. Pasar la variable "nombre" en C++
- 29. Cerrando la Variable de Ciclo en C#
- 30. ¿Cómo se puede deshacer "surroundContents" en javascript?
'int [] array1 = new int [] {1, 3, 5, 7, 9, 10};' y luego 'int array1 = default (int);' devuelve >> Una variable local llamada 'array1' es ya definido en este ámbito – vee