这个成员被定义不止一次,但为什么?

Tec*_*Guy -1 c# c#-4.0

我有这样的PHP代码,我需要将其转换为.NET

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

if(round($mounth)<="6"){$startYear=$year-1;$startMounth="-07";$startDay="-01";
$endYear=$year;$endMounth="-06";$endDay="-30";}
elseif(round($mounth)>="7"){$startYear=$year;$startMounth="-07";$startDay="-01";
$endYear=$year+1;$endMounth="-06";$endDay="-30";}

$startDate=$startYear.$startMounth.$startDay;
$endDate=$endYear.$endMounth.$endDay;

return $startDate.";".$endDate;
}
Run Code Online (Sandbox Code Playgroud)

这是我的转换:

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

        private string _startYear;
        public string StartYear
        {
            get { return _startYear;}
            set { _startYear = value;}
        }

        private string _endYear;
        public string EndYear
       {
        get{return _endYear;}
        set { _endYear = value; }
       }


        private DateTime _startDate;
        public DateTime StartDate
        {
            get { return _startDate;}
            set { _startDate = value;}
        }

        private DateTime _endDate;
        public DateTime EndDate
        {
            get { return _endDate;}
            set { _startDate = value;}
        }

        private string _year;
        public string Year
        {
            get { return _year;}
            set { _year = value;}
        }


        private string _startMonth;
        public string StartMonth
        {
            get { return _startMonth;}
            set { _startMonth = value;}
        }

        private string _endMonth;
        public string EndMonth
        {
        get { return _endMonth;}
        set { _endMonth = value;}
        }

        private DateTime _startDay;
        public DateTime StartDay
        {
            get { return _startDay;}
            set { _startDay = value;}
        }

        private DateTime _endDay;
        public DateTime EndDay
        {
            get { return _endDay; }
            set { _endDay = value; }
        }

        public HuntingDate(){
        DateTime today = DateTime.Now;
        int year = today.Year;
        int month = today.Month;
        DateTime day = today;

        DateTime StartDate = (StartYear+StartMonth+StartDay);
        DateTime EndDate   = (EndYear+EndMonth+EndDay);

        if (month <= 6)
        {
            //string StartYear = Convert.ToString(year-1);
            string StartYear = (year - 1).ToString();
            string StartMonth = Convert.ToString(7);
            string EndYear = Convert.ToString(year);
            string EndMonth = Convert.ToString(6);
            string EndDay = Convert.ToString(30);
        }
        else if(month >= 7)

        {
            string StartYear =Convert.ToString(year);
            string StartMonth = Convert.ToString(7);
            string StartDay = Convert.ToString(1);
            string EndYear = Convert.ToString(year+1);
            string EndMonth = Convert.ToString(6);
            string EndDay = Convert.ToString(30);

        }
        }
        }

        }
Run Code Online (Sandbox Code Playgroud)

我在这里找到的问题:

        DateTime StartDate = (StartYear+StartMonth+StartDay);
        DateTime EndDate   = (EndYear+EndMonth+EndDay);
Run Code Online (Sandbox Code Playgroud)

问题是:该成员被定义不止一次

在这里红色下划线的startyear startmonth startday&以及其他部分.

Hab*_*bib 5

因为您已经定义了公共字段StartDate和属性StartDate,所以不能这样做

public DateTime StartDate;

public DateTime StartDate
        {
            get { return _startDate;}
            set { _startDate = value;}
        }
Run Code Online (Sandbox Code Playgroud)

如果你只是StartDate作为一个财产使用,那么你可以摆脱公共领域,即public DateTime StartDate;.

您似乎正在为每个公共字段定义属性.这是一个语法错误.您可以删除所有公共字段,因为您没有在属性中执行任何操作,您可以将它们定义为:

public DateTime StartDate { get; set; }
Run Code Online (Sandbox Code Playgroud)

  • 你的意思是我需要将这些属性重新定义为公共DateTime StartDate {get; 组; 而不是我的属性集? (2认同)
  • 我仍然不清楚这一点.我只是定义属性&之后实际上我想为此函数分配3个值,如DateTime StartDate =(StartYear + StartMonth + StartDay); 但这不是再次定义知道吗? (2认同)
  • Habib.OSU我无法继续解决这个问题.你告诉我哪个人需要重写? (2认同)
  • 标记为答案.但我仍然试图解决它 (2认同)

Jon*_*eet 5

那么请看StartYear一个例子:

// Field declaration
public string StartYear;

// Property declaration with the same name
public string StartYear
{
    get { return _startYear;}
    set { _startYear = value;}
}
Run Code Online (Sandbox Code Playgroud)

为什么你有公共领域,因为你有公共财产支持的私人领域?摆脱那些公共领域.

从更广泛的角度来看,我不会尝试从另一个平台执行逐字的代码端口 - 我会尝试计算出意图,然后在.NET代码中以惯用的方式实现它.