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

いいえ、列挙型ではありません。このためにクラスを使用する必要があります。

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

次に、さらに考慮すべきことがあります。

  1. 文字列は日付型データには理想的ではありません。このため、DateTimeの使用を検討してください。これにより、年、月、日の値を1つのプロパティにマージできます。

    public class HuntingDate
    {
        public DateTime StartDateTime;
        public DateTime EndDateTime;
    }
    
  2. クラスはオブジェクトの構造を定義するために使用されます。私の例では、クラスを使用するにはクラスのインスタンスを作成する必要があります。

    HuntingDate huntingDate = new HuntingDate();
    

    これを使用して、どこからアクセスしたいかを検討する必要があります。グローバルにアクセス可能なインスタンスが必要な場合は、グローバルスコープレベルでクラスを初期化するか、静的クラスの使用を検討できます(ただし、これらの値はアプリケーション全体で保持されることに注意してください)。

    public static class HuntingDate 
    {
        public static string Something;
    }
    
  3. これをもっと真剣にやりたいのであれば、C#の基本をしっかりと理解する必要があります(本を入手してください!)。

于 2012-06-12T10:43:17.003 に答える
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

私は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
}

私はあなたがクラスを必要とするだろうと推測しています(列挙型ではありません)

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

     rest of code ...
  }
于 2012-06-12T10:51:53.007 に答える
-1

たくさんの答えがあるのを見ましたが、最良の答えは何ですか?

于 2012-06-12T11:17:33.680 に答える