本来菜鸟问个问题。在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;
}
}
} 展开
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;
}
}
} 展开
3个回答
展开全部
写个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());
(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());
追问
缺少程序集引用是什么意思。我们刚开始学这个东西。。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
1 - 参数不匹配:你在构造函数中定义的参数是双精度浮点数double类型,而传递的时候可能给了32位整数int类型(这是窗体控件尺寸的默认类型);
2 - 保护级别:虽然function类被定义为public,但其中的字段weight height length均为默认的级别,即private,因此当访问function实例rec的weight字段时抛出异常。
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;)。
关于私有成员存在的意义,在于对外封装,一般是私有字段和公有属性配合使用,以达到编辑限制、验证、同步响应等目的
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
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;}
这里保证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;}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询