当前位置: 首页 > 编程语言 > C#

关键字’this’(Me)无法调用基础构造函数分享

时间:2023-04-10 22:27:12 C#

C#学习教程:关键字'this'(我)不能调用基构造函数共享类的成员调用这个基构造函数。在此示例中,我有一个PicturedLabel,它知道自己的颜色并有一个图像。TypedLabel:PictureLabel知道它的类型但使用基色。使用TypedLabel的(基本)图像应该用(基本)颜色着色,但是,我无法获得这种颜色错误:关键字“this”在当前上下文中不可用解决方案?///基类publicclassPicturedLabel:Label{PictureBoxpb=newPictureBox();公共颜色标签颜色;publicPicturedLabel(){//这里以特定方式初始化LabelColor=Color.Red;}publicPicturedLabel(Imageimg):base(){pb.Image=img;这个.Controls.Add(铅);}}publicenumLabelType{A,B}///derivedclasspublicclassTypedLabel:PicturedLabel{publicTypedLabel(LabelTypetype):base(GetImageFromType(type,this.LabelColor))//错误:关键字'this'不可用在当前上下文中{}publicstaticImageGetImageFromType(LabelTypetype,Colorc){Imageresult=newBitmap(10,10);矩形rec=新矩形(0,0,10,10);Penpen=newPen(c);图形g=Graphics.FromImage(result);switch(type){caseLabelType.A:g.DrawRectangle(pen,rec);休息;案例LabelType.B:g.DrawEllipse(pen,rec);休息;}返回结果;我认为作为一种解决方法,我将实施以下内容:publicclassPicturedLabel:Label{protectedImage{get{...}set{...}}.........TypedLabel(LabelTypetype):base(...){Type=type;}privateLabelTypeType{set{Image=GetImageFromType(value,LabelColor);编辑:我为此上下文设置了Type属性,但它也可以是公共的。事实上,您可以将Type和LabelColour公开,并且每当用户更改这些属性中的任何一个时,您都可以重新创建图像并进行设置作为基类,这样就可以始终保证在picturebox中显示的是使用代表性图片的错误。如果您被允许按这种方式使用它,则会出现时间问题。您希望LabelColor具有什么值(即初始化时)?TypedLabel的构造函数尚未运行。您正在尝试访问尚未初始化的成员。this.LabelColor调用不可用的基类成员:您在编写时没有调用基类构造函数:base(...)publicTypedLabel(LabelTypetype):base(){pb.Image=GetImageFromType(type,this.LabelColor);LabelColor属性当前未初始化,因此将为空。实际上,此时“this”并没有被初始化,因为在初始化“this”之前调用了基类构造函数,所以无法调用“this”。以上就是C#学习教程:关键字'this'(我)不能调用基本构造函数,分享所有内容。如果对大家有用,需要进一步了解C#学习教程,希望大家多多关注。本文来自网络收藏,不代表立场,如涉及侵权,请点击右边联系管理员删除。如需转载请注明出处: