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是封送类字段,访问上面成员时可能导致运行时异常。大家帮我看看有什么问题么??
//获取本月的月初,月末
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,
不妨单独取出来,再生成一个日期
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));
性能问题不用考虑吧。
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);
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这个结构一样,提示的时候前面都有问号
怪我没仔细看你问题。标题和内容不符DateTime endDate = startDate.AddMonths(1).AddDays(-1);因为这个startDate是成员变量,访问成员变量需要先有成员,但成员变量的创建是早于构造函数的,所以这个约束就冲突了。startDate的访问需要先执行构造函数
DateTime endDate = startDate.AddMonths(1).AddDays(-1);但这句话本身又是在构造函数之前执行的。
所以你需要把这句话修改为
DateTime endDate;然后在构造函数中赋值
endDate = startDate.AddMonths(1).AddDays(-1);
//DateTime startDate = DateTime.Now.AddDays(1 - DateTime.Now.Day);
//DateTime endDate = DateTime.Now.AddDays(1 - DateTime.Now.Day).AddMonths(1).AddDays(-1);
就没有问题了,原来一个道理。