本来菜鸟问个问题。在c#中我一个类写构造函数和方法,我在Main函数中声明,调用。代码如下:

functionrec=newfunction(width,length);//这里说与最匹配的重载方法具有无效参数rec.width=Console.ReadLine(... function rec = new function(width,length);//这里说与最匹配的重载方法具有无效参数
rec.width = Console.ReadLine();//这里说不可以访问,受保护级别,但是我的构造函数,方法都是public修饰啊。
构造函数和方法代码如下:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace 矩形体积与面积
{
class function
{
double width;
double height;
double length;

public function(double width,double length)
{
this.width = width;
this. length = length;

}
public function(double width, double length,double height)
{

this.width = width;
this.length = length;
this.height = height;

}

public double GetArea()
{

return width * length;

}
public double GetVolume()

{

return width * length * height;

}

}

}
展开
 我来答
残缺_天逆
2011-10-02 · TA获得超过107个赞
知道小有建树答主
回答量:99
采纳率:0%
帮助的人:101万
展开全部
写个set()get()方法。
(1)function rec = new function(width,length);//这样写当然与匹配的参数无效了,你的参数是double类型的,这儿不是double类型,所以必须填写double数据。可以通过set()方法来重设。
(2) rec.width = Console.ReadLine();//这里说不可以访问,受保护级别。这儿就要你在写set()和get()方法了,这样你就可以设置了,因为function默认是私有变量,所以要写公共方法来设置和获取变量。代码如下:
public void setWidth(double width)
{
this.width = width;
}

public double getWidth()
{
return width;
}
public void setHeight(double height)
{
this.height = height;
}

public double getHeight()
{
return height;
}

public void setLength(double length)
{
this.length = length;
}

public double getLength()
{
return length;
}
在main()方法中 可以在设置长宽高:
function fc = new function(1,1);

Console.WriteLine("{0}", fc.GetArea());

Console.Write("请设置宽度:");
fc.setWidth(Convert.ToDouble(Console.ReadLine()));
Console.Write("请设置长度:");
fc.setLength(Convert.ToDouble(Console.ReadLine()));

Console.WriteLine("{0}",fc.GetArea());
追问
缺少程序集引用是什么意思。我们刚开始学这个东西。。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
heroius
2011-10-02 · TA获得超过1179个赞
知道小有建树答主
回答量:746
采纳率:0%
帮助的人:248万
展开全部
1 - 参数不匹配:你在构造函数中定义的参数是双精度浮点数double类型,而传递的时候可能给了32位整数int类型(这是窗体控件尺寸的默认类型);
2 - 保护级别:虽然function类被定义为public,但其中的字段weight height length均为默认的级别,即private,因此当访问function实例rec的weight字段时抛出异常。
追问
在main 函数中
Text ben = new Text();
ben.name =Console.ReadLine();//提示不能访问,受保护级别限制
Console.WriteLine(ben.name);
class Text
{
public int i;
private string name;

public string Textb
{
set { name = value; }
get { return name; }
} 我已经把他封装了为什么在main 函数中还是不能使用。

}
追答
name是私有成员(private string name;),你用private修饰,意味这只能在类的内部访问它,而在类外部是不可见的。
若要在外部使用某个类成员,应当将其声明为public (public string name;)。
关于私有成员存在的意义,在于对外封装,一般是私有字段和公有属性配合使用,以达到编辑限制、验证、同步响应等目的
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
习惯受伤
2011-10-02 · TA获得超过446个赞
知道小有建树答主
回答量:459
采纳率:0%
帮助的人:192万
展开全部
function rec = new function(width,length);//这里说与最匹配的重载方法具有无效参数
这里保证function是公开类,在class function前面加入public

rec.width = Console.ReadLine();//这里说不可以访问,受保护级别
这里访问的rec的成员width是私有变量,只能在内部使用,要想使用这个成员的话,可以按照如下做法:

public double width{get; set;}
public double height{get; set;}
public double length{get; set;}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式