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}

我可以用枚举做这个吗?我收到错误“需要标识符,字符串是关键字”

4

6 回答 6

3

不,不是enum,你应该为此使用一个

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# 的基础

于 2012-06-12T10:43:17.003 回答
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 ...
  }
于 2012-06-12T10:51:53.007 回答
1

,你可以用枚举做到这一点。默认情况下,枚举中每个元素的基础类型是 int。您可以使用冒号指定另一种integral numeric类型,如下例所示。有关可能类型的完整列表,请参阅 enum(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.

于 2012-06-12T10:48:53.907 回答
1

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

于 2012-06-12T10:49:55.097 回答
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;
}
于 2012-06-12T10:50:55.050 回答
-1

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

于 2012-06-12T11:17:33.680 回答