背景
嘿伙计们,我现在正在学习软件设计课程,我对此非常困惑。我决定编写一个程序,这样我就可以了解类的基本知识:类交互,我现在有两个类,一个算术类,它包含一些非常简单的方法,如multiply()
,{{1等等。
和我的主类,它包含一个通过case语句的CLI菜单。
我要做的是让我的算术类模块化。
我的addition()
和ResultGen()
方法包含randomNumberGen()
,如果可能,我不希望此算术类必须依赖于存在的控制台类(因为我想要使用)这个算术类很快就会有一个GUI WPF程序。
我的问题是,
如何将我的Console.WriteLine
方法中的month
和year
变量转到我的主randomNumberGen()
类,以便我可以格式化那些,我该怎么做从Program()
过来的result
变量也是?
我最好使用参数或getter和setter来解决这个问题而不是返回。
ResultGen()
这是我的主要计划:
public int ResultGen()
{
Console.WriteLine("Result is equal to: " + result + ".");
return result;
}
public void randomNumberGen()
{
Random rnd = new Random();
month = rnd.Next(1, 11); // creates a number between 1 and 12
year = rnd.Next(1, 21); // creates a number between 1 and 51
Console.WriteLine("Month: " + month);
Console.WriteLine("Year: " + year);
}
我感谢你们给予的任何帮助,但请记住,我是一名新手程序员,只是想了解基本的做法。
如果我尝试这样做,我可能会使用toString()方法,我已经尝试过并失败了。
答案 0 :(得分:0)
对于第一种方法,只需删除Console.WriteLine
调用,然后在处理输出的应用程序中执行此操作。
对于第二个,你需要返回两个变量,在这种情况下建议返回一个元组。
将randomNumberGen的返回类型更改为Tuple<int,int>
两个元组的类型,其中两个成员的类型都是整数,因此您的方法签名应为
public Tuple<int,int> randomNumberGen()
您应该从两个变量(月和年)创建元组,再次使用一些方法来创建这个元组,最简单的方法是使用start Tuple.Create
因此,您的return语句应如下return Tuple.Create(month,year)
在调用者端删除变量,您可以为第一个调用Item1
属性,为第二个调用Item2
属性。
你的方法应该是这样的
public Tuple<int,int> RandomNumberGen()
{
Random rnd = new Random();
int month = rnd.Next(1, 11); // creates a number between 1 and 12
int year = rnd.Next(1, 21); // creates a number between 1 and 51
return Tuple.Create(month,year);
}
并在你的主要
var result = math.randomNumberGen();
var month = result.Item1;
var year = result.Item2;
现在,无论你喜欢什么,都可以使用月份和年份。
设计说明
知道这不是你问题的一部分,但正如通常在C#中命名面向公众的成员的惯例是上骆驼案例,本地人是较低的骆驼案例
您可以在任何具有该属性设置器可见性的上下文中设置属性,即属性,在这种情况下这样做是没有意义的:
你班上的
public int Month{ get; private set;}
public int Year { get; private set; }
public void RandomNumberGen()
{
Random rnd = new Random();
Month = rnd.Next(1, 11); // creates a number between 1 and 12
Year = rnd.Next(1, 21); // creates a number between 1 and 51
}
在你的主要
var custGenVarName = new Arithmetic();
custGenVarName.RandomNumberGen();
int month = custGenVarName.Month;
int year = custGenVarName.Year;
在这种情况下没有意义,因为计算结果不应该存在于要进行计算的对象中,应该进行计算并返回给调用者