DateTime dt =DateTime.Now;
        //获取本月的月初,月末
        DateTime startDate = dt.AddDays(1 - dt.Day);
        DateTime endDate = startDate.AddMonths(1).AddDays(-1);错误 8 字段初始值设定项无法引用非静态字段、方法或属性“SHUSD.ArrangementForm.dt” D:\SHUSD\SHUSD\ArrangementForm.cs 15 30 SHUSD错误 9 字段初始值设定项无法引用非静态字段、方法或属性“SHUSD.ArrangementForm.dt” D:\SHUSD\SHUSD\ArrangementForm.cs 15 45 SHUSD
错误 12 字段初始值设定项无法引用非静态字段、方法或属性“SHUSD.ArrangementForm.startDate” D:\SHUSD\SHUSD\ArrangementForm.cs 16 28 SHUSD
由于dt是封送类字段,访问上面成员时可能导致运行时异常。大家帮我看看有什么问题么??

解决方案 »

  1.   

    感觉楼主这样写有点难懂,月初就是本月的1号,从day中取出来年月日,重新组合一下。
    月末其实是下月的1号减1,
    不妨单独取出来,再生成一个日期
    DataTime dt = dataTime.Noew;
    DateTime dt1月初 = new DataTime(datetime,Year,datatimemonth,1);
    DateTime dt月末 =  dt1月初 + (new TimeSpan(0,1,0)) - (new TimeSpan(0,0,1));
    性能问题不用考虑吧。
      

  2.   


     DateTime now = DateTime.Now;
            DateTime begin = new DateTime(now.Year, now.Month, 1);
            int day = DateTime.DaysInMonth(now.Year, now.Month);
            DateTime end = new DateTime(now.Year, now.Month, day);
      

  3.   

    using System;
    using System.Collections.Generic;
    using System.ComponentModel;
    using System.Data;
    using System.Drawing;
    using System.Text;
    using System.Windows.Forms;namespace SHUSD
    {
        public partial class ArrangementForm : Form
        {
            ////获取本月的月初,月末
            public DateTime dt
            {
                get
                {
                    return DateTime.Now;
                }
                set
                {
                    dt = value;
                }
            }
            DateTime startDate = dt.AddDays(1 - dt.Day);
            DateTime endDate = startDate.AddMonths(1).AddDays(-1);还是提示一样的问题,就好像没有datetime这个结构一样,提示的时候前面都有问号
      

  4.   

    er。。
    怪我没仔细看你问题。标题和内容不符DateTime endDate = startDate.AddMonths(1).AddDays(-1);因为这个startDate是成员变量,访问成员变量需要先有成员,但成员变量的创建是早于构造函数的,所以这个约束就冲突了。startDate的访问需要先执行构造函数
    DateTime endDate = startDate.AddMonths(1).AddDays(-1);但这句话本身又是在构造函数之前执行的。
    所以你需要把这句话修改为
    DateTime endDate;然后在构造函数中赋值
    endDate = startDate.AddMonths(1).AddDays(-1);
      

  5.   

    谢谢逍遥,我说怎么把改成
            //DateTime startDate = DateTime.Now.AddDays(1 - DateTime.Now.Day);
            //DateTime endDate = DateTime.Now.AddDays(1 - DateTime.Now.Day).AddMonths(1).AddDays(-1);
    就没有问题了,原来一个道理。