Foros del Web » Programación para mayores de 30 ;) » .NET »

If fuera de un void - C#

Estas en el tema de If fuera de un void - C# en el foro de .NET en Foros del Web. Hola. Antes que nada quiero aclarar que estoy aprendiendo C# por lo que puedo ser muy ignorante. Este es mi código: Código: ... bool HasPermission(BasePlayer ...
  #1 (permalink)  
Antiguo 22/11/2015, 22:07
 
Fecha de Ingreso: abril-2013
Mensajes: 32
Antigüedad: 11 años, 7 meses
Puntos: 0
If fuera de un void - C#

Hola. Antes que nada quiero aclarar que estoy aprendiendo C# por lo que puedo ser muy ignorante.

Este es mi código:
Código:
   ...
        bool HasPermission(BasePlayer player, string perm) => permission.UserHasPermission(player.UserIDString, perm);
        private ItemSkinDirectory.Skin defaultSkin;
        private readonly List<int> randomizedTasks = new List<int>();



        private void Loaded()
        {
            permission.RegisterPermission("testeamos", this);
            defaultSkin = new ItemSkinDirectory.Skin
            {
                name = "Default",
                id = 0
            };
        }

        private void OnItemCraft(ItemCraftTask task, BasePlayer crafter, BasePlayer player)
        {
            var skins = ItemSkinDirectory.ForItem(task.blueprint.targetItem).ToList();
            if (skins.Count < 1 || task.skinID != 0) return;
            randomizedTasks.Add(task.taskUID);
            skins.Add(defaultSkin);
            task.skinID = skins.GetRandom().id;
        }

        private void OnItemCraftFinished(ItemCraftTask task, Item item)
        {
            if (!randomizedTasks.Contains(task.taskUID)) return;
            if (task.amount == 0)
            {
                randomizedTasks.Remove(task.taskUID);
                return;
            }
            var skins = ItemSkinDirectory.ForItem(task.blueprint.targetItem).ToList();
            skins.Add(defaultSkin);
            task.skinID = skins.GetRandom().id;
        }
    ...
Lo que quiero hacer es poner este if: if (!HasPermission(player, "testeamos")) return; por fuera de todo ese código. Osea, algo así como:

Código:
if (!HasPermission(player, "testeamos")){
//todo el codigo
}
Pero el problema es que el if funcione tengo que hacer un void así:

Código:
void x(BasePlayer player)
        { 
if (!HasPermission(player, "testeamos")){
//todo el codigo
}
}
Pero no se puede poner un void dentro de otro.

Bueno, espero que me entiendan. Sé que es un desastre pero entiendan que soy muy muy muy novato en esto.

¡Muchisimas gracias!
  #2 (permalink)  
Antiguo 23/11/2015, 13:43
(Desactivado)
 
Fecha de Ingreso: enero-2015
Mensajes: 393
Antigüedad: 9 años, 9 meses
Puntos: 52
Respuesta: If fuera de un void - C#

Antes que nada te pido una aclaración: ¿De donde salen todas esas clases? estas usando Unity3D o algo similar? siempre conviene que aclares de qué framework se trata para entender mejor el contexto de tu código.

Luego: eso es una declaración de varios métodos, no se puede poner un if "por fuera" de todo eso, porque no es solamente código ejecutable, sino declaraciones de miembros. A diferencia de otros lenguajes, C# no permite código suelto tirado en cualquier lado, sino que tiene una estructura correcta y el código ejecutable sólo puede existir dentro de los lugares correctos (por ejemplo, dentro de un miembro de una clase, o como parte de la declaración/inicialización de un miembro).

No entiendo qué estás tratando de hacer, pero estás encarando el problema de forma incorrecta. Si das un poco más de contexto de qué estás haciendo, y cuál es exactamente la acción que querés permitir o evitar con tu if, seguramente te podré ayudar mejor.
  #3 (permalink)  
Antiguo 23/11/2015, 14:21
 
Fecha de Ingreso: abril-2013
Mensajes: 32
Antigüedad: 11 años, 7 meses
Puntos: 0
Respuesta: If fuera de un void - C#

Hola. Gracias por responder.
Sí, es Unity3D.
Esto es un plugin para un juego online. Lo que quiero hacer es que este plugin se ejecute sólo si el usuario tiene ciertos permisos. Estos permisos se tienen que declarar:

Código:
permission.RegisterPermission("testeamos", this);
Entonces. Si el usuario tiene el permiso "testeamos" se ejecuta el plugin. Si no, no.

Espero haberme explicado.

Muchisimas gracias!

Etiquetas: fuera, void
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 22:39.