c# 实例化对象的问题 应该很简单的

2025-05-16 14:53:29
推荐回答(5个)
回答1:

不可以,e.Graphics是e的一个属性。只是把已经存在的一个对象赋给变量g

e是方法中的参数。是PaintEventArgs类(为 Paint 事件提供数据。)
e.Graphics是Graphics类(一个 GDI+ 绘图图面),在这里是e中的一个属性。

你注意看参数类型,Paint事件是的e是PaintEventArgs类,而Click事件是的e是EventArgs类,是不一样的,EventArgs类没有Graphics属性。
要是想在Click事件中获取libMode控件的Graphics,可以按如下取得:
private void libMode_Click(object sender, EventArgs e)
{
Graphics g = Graphics.FromHwnd(libMode.Handle);
}

回答2:

1、可以不用NEW关键字实例化对象吗?
答:明确的告诉你,不可以,Graphics类是不可以new 的。
2、e 和 e.Graphics怎么理解?
答:e是方法中的参数。是PaintEventArgs类(为 Paint 事件提供数据。)
e.Graphics是Graphics类(一个 GDI+ 绘图图面),在这里是e中的一个属性。
3、为啥……?
答:你注意看参数类型,Paint事件是的e是PaintEventArgs类,而Click事件是的e是EventArgs类,是不一样的,EventArgs类没有Graphics属性。
要是想在Click事件中获取libMode控件的Graphics,可以按如下取得:
private void libMode_Click(object sender, EventArgs e)
{
Graphics g = Graphics.FromHwnd(libMode.Handle);
。。。。
}

回答3:

Graphics g = e.Graphics;
这不是实例化对象,e.Graphics是e的一个属性。只是把已经存在的一个对象赋给变量g。
libMode_Paint方法中,e的类型是PaintEventArgs,所以包含Graphics属性。
而libMode_Click方法中,e的类型是EventArgs不包含Graphics属性。所以不能用e.Graphics。

有的时候你看不到具体的new方法实例化对象并不是不用new,而是在你调用的方法内部调用了。最最典型的比如设计模式中,工厂模式的Create方法。你以后如果学到了就会明白了。

回答4:

1,实例化对象肯定需要new,有些好像是通过调用方法来实现的,其实也是在方法里面应用了new,
2,e是时间远的包含体,他包含着事件源的一些信息,比如名字等等,不同事件源所携带的信息是不一样的,打点是可以产看的。

Graphics g = e.Graphics;
无法运行的主要原因是e.Graphics返回的对象应该不是Graphics

回答5:

可以,可以调用静态函数实例化。PaintEventArgs e,e.Graphics应该是实力化Graphics,PaintEventArgs 中的Graphics函数就可以实例化Graphics。j2me中有很多这样的实例化方法。