标识符预期,String是关键字

时间:2012-06-12 10:40:42

标签: c# c#-4.0

我有这样的PHP代码,将其转换为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'];

这是我的尝试(我尝试使用枚举)

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

我能用enum做这个吗?我收到错误“标识符预期,字符串是关键字”

6 个答案:

答案 0 :(得分:3)

不,不是enum,您应该使用class

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

然后你需要考虑进一步的事情:

  1. 字符串不适合日期类型数据,因此请考虑使用DateTime - 您可以将年,月和日值合并为一个property

    public class HuntingDate
    {
        public DateTime StartDateTime;
        public DateTime EndDateTime;
    }
    
  2. 类用于定义对象的结构,正如我的示例所示,您需要create an instance of the class才能使用它:

    HuntingDate huntingDate = new HuntingDate();
    

    有了这个,你必须考虑你想要访问它的位置。如果您需要一个全局可访问的实例,您可以在全局范围级别初始化该类,或者考虑使用static class(尽管应该注意这些值将在整个应用程序中保持不变):

    public static class HuntingDate 
    {
        public static string Something;
    }
    
  3. 我强烈建议你在C#上做一些阅读(获得a book!)如果你想更认真地做这件事你应该扎实地掌握C#的基础知识

答案 1 :(得分:1)

  

,您可以使用枚举执行此操作。默认情况下,枚举中每个元素的基础类型是int。   您可以使用冒号指定另一个integral numeric类型   如下例所示。有关可能类型的完整列表,请参阅enum(C#   参考)。

示例:

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

您可以使用structclass类型来实现此目的。

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;
}

如果您的Year没有必要,那么它可以缩短为:

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

其他明智的选择包括Year

答案 2 :(得分:1)

我想你想要(字符串)值“StartYear”,“EndYear”等等作为枚举的值。 你不能这样做:枚举总是基于某种整数类型。

答案 3 :(得分:1)

我认为你最好在开始日期和结束日期使用DateTime类型,并将它们全部包含在类似这样的类中:

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;
}

答案 4 :(得分:1)

请记住,我不知道php ...来自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
}

我猜你需要一个班级(而不是enum

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

     rest of code ...
  }

答案 5 :(得分:-1)

我看到有很多答案,什么是最好的答案?