已经实例化了,为什么还会出现:非静态的字段、方法或属性“”要求对象引用~

stonesearicky 2007-08-21 04:51:58
先贴代码:
Book book=new Book();
book.Editor=txteditor.Text;
book.Name =txtname.Text;
book.Publish=txtpp.Text;
resource.Data.Book.ModifyAR(book);
我已经实例化了book类,为什么还提示非静态字段需要对象引用,如果是普通方法不是直接实例化就可以了吗?
当然我如果将类中方法改为静态方法,程序中是没有错误的,请各位指教!
...全文
1080 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
stonesearicky 2007-08-22
  • 打赏
  • 举报
回复
问题就在于book.ModifyAR(book)也不好,暂时先放下不说了,用了静态方法让程序运行了。
谢谢各位!等写完这个程序了,再坐下来好好研究吧。
hexchina 2007-08-22
  • 打赏
  • 举报
回复
既然然ModifyAR方法不是静态的,resource.Data.Book.ModifyAR(book);就是错误的。
book.ModifyAR(book)不就好咯。
stonesearicky 2007-08-21
  • 打赏
  • 举报
回复
程序中ModityAR不是静态方法,编译的时候如碧海蓝天所说不会自动跳出,也如上面各位谈到的所以我对其进行了实例化:
Book book=new Book();
book.Editor=txteditor.Text;
book.Name =txtname.Text;
book.Publish=txtpp.Text;
resource.Data.Book.ModifyAR(book);
现在疑惑的就是在实例化这个非静态函数以后为什么还会出现“要求对象引用的问题”!

ezhuyin 2007-08-21
  • 打赏
  • 举报
回复
resource.Data.Book.ModifyAR(book);
如果不是静态的,编译器内不会自动跳出来的。所以假设Book.ModifyAR是静态方法。然后来看静态方法里面

namespace resource.Data
{
public class Book
{
public static void ModityAR(Book item)
{
// 这里面只能够用到静态外部变量、方法,和所给的item参数,以及内部定义的动态变量
}
}
}
xuan.ye 2007-08-21
  • 打赏
  • 举报
回复
ModifyAR()方法内如果调用其他的方法也得是静态的
ice_frank 2007-08-21
  • 打赏
  • 举报
回复
如楼上所说

Book.ModifyAR是否为静态方法
angelzjk 2007-08-21
  • 打赏
  • 举报
回复
静态方法是在程序编译的时候生成到内存里 可以不用实例化就可以直接调用的
你的ModifyAR 方法不是静态的只能在实例化以后通过对象调用
book.ModifyAR(book);
stonesearicky 2007-08-21
  • 打赏
  • 举报
回复
不是静态的,但是我之前的项目当中,类似的没有出现过这种问题,另外下面那种调用方法我原来也试过,同样错误。
难道所有的方法必须定义为静态方法,这是不合理的呀!
北京的雾霾天 2007-08-21
  • 打赏
  • 举报
回复
resource.Data.Book.ModifyAR(book);
-------------

Book中的ModifyAr方法是静态的吗?
如果不是一定会报错。

或者你这样调用:

book.ModifyAR(book);
Date 对象属性constructor 返回对创建此对象的 Date 函数的引用。prototype 使您有能力向对象添加属性方法。Date 对象方法getDate() 从 Date 对象返回一个月中的某一天 (1 ~ 31)。getDay() 从 Date 对象返回一周中的某一天 (0 ~ 6)。getFullYear() 从 Date 对象以四位数字返回年份。getHours() 返回 Date 对象的小时 (0 ~ 23)。getMilliseconds() 返回 Date 对象的毫秒(0 ~ 999)。getMinutes() 返回 Date 对象的分钟 (0 ~ 59)。getMonth() 从 Date 对象返回月份 (0 ~ 11)。getSeconds() 返回 Date 对象的秒数 (0 ~ 59)。getTime() 返回 1970 年 1 月 1 日至今的毫秒数。getTimezoneOffset() 返回本地时间与格林威治标准时间 (GMT) 的分钟差。getUTCDate() 根据世界时从 Date 对象返回月中的一天 (1 ~ 31)。getUTCDay() 根据世界时从 Date 对象返回周中的一天 (0 ~ 6)。getUTCFullYear() 根据世界时从 Date 对象返回四位数的年份。getUTCHours() 根据世界时返回 Date 对象的小时 (0 ~ 23)。getUTCMilliseconds() 根据世界时返回 Date 对象的毫秒(0 ~ 999)。getUTCMinutes() 根据世界时返回 Date 对象的分钟 (0 ~ 59)。getUTCMonth() 根据世界时从 Date 对象返回月份 (0 ~ 11)。getUTCSeconds() 根据世界时返回 Date 对象的秒钟 (0 ~ 59)。getYear() 已废弃。 请使用 getFullYear() 方法代替。parse() 返回1970年1月1日午夜到指定日期(字符串)的毫秒数。setDate() 设置 Date 对象中月的某一天 (1 ~ 31)。setFullYear() 设置 Date 对象中的年份(四位数字)。setHours() 设置 Date 对象中的小时 (0 ~ 23)。setMilliseconds() 设置 Date 对象中的毫秒 (0 ~ 999)。setMinutes() 设置 Date 对象中的分钟 (0 ~ 59)。setMonth() 设置 Date 对象中月份 (0 ~ 11)。setSeconds() 设置 Date 对象中的秒钟 (0 ~ 59)。setTime() setTime() 方法以毫秒设置 Date 对象。setUTCDate() 根据世界时设置 Date 对象中月份的一天 (1 ~ 31)。setUTCFullYear() 根据世界时设置 Date 对象中的年份(四位数字)。setUTCHours() 根据世界时设置 Date 对象中的小时 (0 ~ 23)。setUTCMilliseconds() 根据世界时设置 Date 对象中的毫秒 (0 ~ 999)。setUTCMinutes() 根据世界时设置 Date 对象中的分钟 (0 ~ 59)。setUTCMonth() 根据世界时设置 Date 对象中的月份 (0 ~ 11)。setUTCSeconds() setUTCSeconds() 方法用于根据世界时 (UTC) 设置指定时间的秒字段。setYear() 已废弃。请使用 setFullYear() 方法代替。toDateString() 把 Date 对象的日期部分转换为字符串。toGMTString() 已废弃。请使用 toUTCString() 方法代替。toISOString() 使用 ISO 标准返回字符串的日期格式。toJSON() 以 JSON 数据格式返回日期字符串。toLocaleDateString() 根据本地时间格式,把 Date 对象的日期部分转换为字符串。toLocaleTimeString() 根据本地时间格式,把 Date 对象的时间部分转换为字符串。toLocaleString() 据本地时间格式,把 Date 对象转换为字符串。toString() 把 Date 对象转换为字符串。toTimeString() 把 Date 对象的时间部分转换为字符串。toUTCString() 根据世界时,把 Date 对象转换为字符串。UTC() 根据世界时返回 1970 年 1 月 1 日 到指定日期的毫秒数。valueOf() 返回 Date 对象的原始值。

110,539

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧