如何在方法中只调用返回变量?
本文关键字:调用 返回 变量 方法 | 更新日期: 2023-09-27 18:18:24
我是新手,正在努力学习面向对象编程。我想在我的第三个方法'tableinfo'中只使用返回值,但我不知道如何仅将此值转移到其他方法,而无需再次运行前两个方法。所有我想做的就是只转移用户输入到第三个方法的值,而不必每次输入两次值,这是我知道获得值的唯一方法,如果有人能帮助我获得返回值,我将非常感激。这段代码是我想做的事情的一个小片段,它的目的并不重要,我只是想创建一个例子,试图让人们理解我的意思。提前感谢!
class Program
{
static void Main(string[] args)
{
TableOrder TO = new TableOrder();
TO.TableNumber();
TO.NumberOfPartons();
TO.tableinfo();
}
}
class TableOrder
{
int tablenumber;
string inputtablenumber;
int numberAtTable;
string inputNumberAtTable;
public int TableNumber()
{
Console.Write("please enter the table number:");
inputtablenumber = Console.ReadLine();
tablenumber = int.Parse(inputtablenumber);
return tablenumber;
}
public int NumberOfPartons()
{
Console.Write("please enter how many people are seated: ");
inputNumberAtTable = Console.ReadLine();
numberAtTable = int.Parse(inputNumberAtTable);
return numberAtTable;
}
public void tableinfo()
{
int tablenum = TableNumber();
Console.Write(tablenumber + 1);
int patrons = NumberOfPartons();
Console.WriteLine(numberAtTable + 1);
}
}
看起来您可能对方法、属性和字段之间的区别感到困惑。您的函数tablennumber()可能更准确地称为askuserfortablennumber()或gettablenumberfromput()。差不多就是这样。您还设置了一个成员字段并返回该值。有很多方法可以存储和检索那个值。如果成员字段表号被标记为公共,则可以访问它。或者在main函数中这样做:
int tablenum=TO.TableNumber();
,然后重用该值。
您正在做的另一件奇怪的事情是将输入字符串存储为成员字段。如果你不需要再次引用那个字符串,那么它就没有理由成为TableOrder对象的成员,它可以是进行输入的函数的一个局部变量。
但似乎你正在尝试使用TableOrder。TableNumber就像一个属性。这很可能是正确的做法,但不是以你现在的方式。下面是做类似事情的一种(有点奇特的)方法,它也使用了延迟加载的概念…
class TableOrder
{
private int? _tablenumber;
public int TableNumber
{
get
{
return _tablenumber ?? (_tablenumber=GetTableNumberFromInput());
}
set
{
_tablenumber = value;
}
}
private static int GetTableNumberFromInput()
{
Console.Write("please enter the table number:");
string inputtablenumber = Console.ReadLine();
return int.Parse(inputtablenumber);
}
//(and so on for other member properties)
}
这样,当您第一次尝试访问表号时,它将向用户询问值。之后,您将已经拥有该值,因此它不会再次询问。请注意,这种类型的方法并不是真正必要的,它主要用于等待加载值,直到需要使用该值。相反,你可以这样做:TableOrder。TableNumber = gettablenumberfromput ();
首先,您可以删除main中的调用,因为方法tableinfo()
将调用它们:
class Program
{
static void Main(string[] args)
{
TableOrder TO = new TableOrder();
TO.tableinfo();
}
}
第二,你想使用你已经声明过的类变量,这两个函数的返回值存储在其中,您可以使用Write
输出它们。
public void tableinfo()
{
tablenumber = TableNumber();
Console.Write(tablenumber + 1);
numberAtTable = NumberOfPartons();
Console.WriteLine(numberAtTable + 1);
}
在这个函数的作用域中,返回值(return numberAtTable
和return tablenumber
)不再存在,它们被存储在调用函数的剩余部分。