Se esperaba el identificador, la cadena es una palabra clave

Tengo un código php como este, voy a convertirlo a C#.

function HuntingDate()
{
    Global $nameofselectbox,$startYear,$endYear,$year,
    $startDate,$endDate,$startMounth,$endMounth,$startDay,$endDay;
    $today = getdate();
    $year=$today['year'];
    $mounth=$today['mon'];
    $day=$today['mday'];

Aquí está mi intento (traté de usar enum para esto)

public enum  HuntingDate{string StartYear,string EndYear,string Year,string StartDate,string EndDate,string StartMonth,string EndMonth,stirng StartDay,string EndDay}

¿Puedo hacer esto con enum? Recibí el error "Se esperaba un identificador, la cadena es una palabra clave"

preguntado el 12 de junio de 12 a las 11:06

Qué es esto stirng StartDay... -

¿Por qué todo es un string ? Tiene tantos tipos de datos interesantes disponibles... Además, esto no parece tener nada que ver con un enum. Puede ser que hayas entendido mal el enum palabra clave. -

6 Respuestas

no no con enumerar, deberías usar un clase para esto:

public class HuntingDate
{
    string StartYear;
    string EndYear;
    string Year;
    string StartDate;
    string EndDate;
    string StartMonth;
    string EndMonth;
    string StartDay;
    string EndDay;
}

entonces tienes más cosas que considerar:

  1. Las cadenas no son ideales para datos de tipo de fecha, para esto considere usar DateTime - con esto puede fusionar los valores de año, mes y día en uno perfecta:

    public class HuntingDate
    {
        public DateTime StartDateTime;
        public DateTime EndDateTime;
    }
    
  2. Las clases se utilizan para definir la estructura de un objeto, tal como está mi ejemplo, necesitaría crear una instancia de la clase para usarlo:

    HuntingDate huntingDate = new HuntingDate();
    

    con esto tienes que considerar donde quieres tener acceso a él. Si necesita una instancia accesible global, puede inicializar la clase en un nivel de alcance global o considerar usar un clase estática (aunque debe tenerse en cuenta que estos valores persistirían en toda la aplicación):

    public static class HuntingDate 
    {
        public static string Something;
    }
    
  3. Sugeriría encarecidamente leer un poco en C# (obtener un libro!) si quiere hacer esto más en serio, debe obtener una sólida comprensión de los conceptos básicos de C#

Respondido el 12 de junio de 12 a las 12:06

entonces debería ser Clase pública HuntingDate () { StartYear datetime} ¿estoy en lo correcto? - TechGuy

@ChathuraRanasinghe: ¿No estás seguro de lo que quieres decir? He editado el punto 1 como mi mejor suposición de cuál es su pregunta: musefan

Supongo que desea los valores (cadena) "StartYear", "EndYear", etc. como valores de una enumeración. No puede hacer eso: una enumeración siempre se basa en algún tipo de entero.

Respondido el 12 de junio de 12 a las 11:06

Creo que sería mejor usar el tipo DateTime para las fechas de inicio y finalización, y envolverlo todo en una clase como esta:

public class HuntingDate
{
    public HuntingDate(DateTime start, DateTime end)
    {
        _start = start;
        _end   = end;
    }

    public DateTime End
    {
        get
        {
            return _end;
        }
    }

    public DateTime Start
    {
        get
        {
            return _start;
        }
    }

    private readonly DateTime _start;
    private readonly DateTime _end;
}

Respondido el 12 de junio de 12 a las 11:06

No, Puedes hacer esto con enum. De forma predeterminada, el tipo subyacente de cada elemento de la enumeración es int. Puedes especificar otro integral numeric escriba usando dos puntos, como se muestra en el siguiente ejemplo. Para obtener una lista completa de los tipos posibles, consulte enum (referencia de C#).

Ejemplo:

enum Months : byte { Jan, Feb, Mar, Apr, May, Jun, Jul, Aug, Sep, Oct, Nov, Dec }; 

Puedes usar el struct or clase escriba para este propósito.

public struct HuntingDate
{
    int StartYear;
    int StartMonth;
    int StartDay;         
    int Year;             
    DateTime StartDate;  // it smells like you are storing date then why do 
                         // you not use DateTime rather than these..   
    DateTime EndDate;
    int EndYear;
    int EndMonth;        
    int EndDay;
}

Si Year no es necesario entonces se puede acortar como:

public struct HuntingDate
{
  public DateTime StartDate;                         
  public DateTime EndDate;
}

de lo contrario, busque los valores completos, incluidos Year.

Respondido el 12 de junio de 12 a las 12:06

Tenga en cuenta que no sé php de... bueno php...

function HuntingDate()
{
    Global $nameofselectbox,$startYear,$endYear,$year,
    $startDate,$endDate,$startMounth,$endMounth,$startDay,$endDay;
    $today = getdate();
    $year=$today['year'];
    $mounth=$today['mon'];
    $day=$today['mday'];

   ... rest of code
}

Supongo que necesitarás una clase (y no un enumerar)

  public class HuntingDate()    
  {
     string NameOfSelectbox;
     DateTime endDate;

     rest of code ...
  }

Respondido 16 Abr '15, 08:04

Vi que hay muchas respuestas, ¿CUÁL ES LA MEJOR RESPUESTA?

Respondido el 12 de junio de 12 a las 12:06

todavía estoy tratando de hacer uno por uno, si alguien puede decirme cuál es el bstone puedo probarlo directamente, de todos modos intentaré y notificaré aquí - TechGuy

No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas or haz tu propia pregunta.