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

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;

}

}

}

第1个回答  2011-10-02
写个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());追问

缺少程序集引用是什么意思。我们刚开始学这个东西。。

第2个回答  2011-10-02
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;)。
关于私有成员存在的意义,在于对外封装,一般是私有字段和公有属性配合使用,以达到编辑限制、验证、同步响应等目的

本回答被提问者采纳
第3个回答  2011-10-02
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;}

菜鸟问题:C#中如何输出[
方法在调用时一定要加括号“()”,为的是可以加不同的参数,实现不同的方法重载,得到不同的结果。在写代码是可以先写“(”,过一会儿就会自动显示出该方法可以用的重载提示了。

c#编译器VS写代码的时候的问题(我菜鸟)
1.通过参数。写一个方法 public static void TextChange( System.Windows.Forms.TextBox t){ t.Text = "aaa";} 然后在你的主窗体调用这个静态方法,将你的textbox当作参数传入即可 2.通过窗体。找到textbox的Modifiers属性设置为Public 然后 创建 public static Form1 fm;在Form1_Load中 fm = thi...

在C#.net中如何实现一下功能(菜鸟问题)
if (SubFrame.ShowModal() == DialogResult.OK){ } if (SubFrame.ShowModal() == DialogResult.Canle)

c#中的一个菜鸟级问题
在a=1哪里 下断点就行了,然后调试 代码是按顺序执行的 执行a=1这个时候a就是1了,由执行下面让a=2,这个时候a就是2了,下面没有在对a付值的了,a就一直是2了

C语言里面构造函数和析构函数的运用办法
在你可以访问一个类的方法、属性或任何其它东西之前, 第一条执行的语句是包含有相应类的构造函数。甚至你自己不写一个构造函数,也会有一个缺省构造函数提供给你。 class TestClass { public TestClass(): base() {} \/\/ 由CLR提供 } 下面列举了几种类型的构造函数 1)缺省构造函数 class TestClass { public...

我是个菜鸟,求学习方法!
我们经常看到这样的情况:某同学学习极其用功,在学校学,回家也学,不时还熬熬夜,题做得数不胜数,但成绩却总上不去其实面对这样的情况,我也是十分着急的,本来,有付出就应该有回报,而且,付出的多就应该回报很多,这是天经地义的事。但实际的情况却并非如此,这里边就存在一个效率的问题。效率指什么呢?好比学一样...

我是菜鸟请问各位大侠c#控件常用的有哪些(具体点) 谢谢!
(1)Show方法:该方法的作用是让窗体显示出来,其调用格式为: 窗体名.Show(); 其中窗体名是要显示的窗体名称。 (2)Hide方法:该方法的作用是把窗体隐藏出来,其调用格式为: 窗体名.Hide(); 其中窗体名是要隐藏的窗体名称。 (3)Refresh方法:该方法的作用是刷新并重画窗体,其调用格式为: 窗体名.Refresh(); 其中...

c#中构造函数与函数声明有什么区别!格式有啥不同?
\/\/带参数的构造函数 public A(string a){ this.s=a;} } 一般函数的声明则不受这些约束 只要定义在命名空间内,命名形式为:修饰符 返回值类型 函数名(参数类型1,参数名1,。。。)例如:private static void Main(string args)声明了一个私有的静态主函数,无返回值,参数为args,string类型 ...

c++定义了一个类 在main函数里对变量声明的时候报错
参数不对,“Jan”是个string类型,而你的类里参数类型是指针类型,你可以先char *ch="Jan";然后调用构造函数,Month month3(ch);

求助!C++中类的构造函数与创建动态对象的问题!
第一段代码 类a中你没有些构造函数,因此,编译器会替你自动添加一个默认的构造函数: a(void){},所以你在第一段的main函数中p = new a;时,实际上调用的是这个默认的构造函数a(void){},当然不需要参数。第二段代码你自己写了构造函数,编译器就不会替你添加默认的构造函数,所以在main...

相似回答