标识符预期,字符串是一个关键字

本文关键字:一个 关键字 字符串 标识符 | 更新日期: 2023-09-27 18:36:50

我有一个这样的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}

我可以用枚举来做这个吗? 我收到错误"预期标识符,字符串是关键字"

标识符预期,字符串是一个关键字

不,不使用枚举,您应该为此使用一个类:

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

然后,您还需要考虑其他事项:

  1. 字符串对于日期类型数据并不理想,为此请考虑使用 DateTime - 有了这个,您可以将年、月和日值合并到一个属性中:

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

    HuntingDate huntingDate = new HuntingDate();
    

    有了这个,您必须考虑要访问它的位置。如果需要全局可访问实例,则可以在全局作用域级别初始化类,或考虑使用静态类(尽管应该注意的是,这些值将在整个应用程序中保留):

    public static class HuntingDate 
    {
        public static string Something;
    }
    
  3. 我强烈建议你读一些关于C#的书(买一本书!)如果你想更认真地做到这一点,你应该牢牢掌握C#的基础知识

我想你想要(字符串)值"开始年份","结束年份"等作为枚举的值。你不能这样做:枚举总是基于某种整数类型。

我认为您最好使用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;
}

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

例:

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

为此,可以使用结构或类类型。

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

请注意,

我不知道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
}

我猜你需要一个类(而不是枚举)

  public class HuntingDate()    
  {
     string NameOfSelectbox;
     DateTime endDate;
     rest of code ...
  }

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

相关文章: