我需要一些帮助,在另一个类中使用属于一个类的变量。
我有包含Weeks
和StartDate
属性的Semester
类。
在另一个类CalcDisplay
中,我有方法CalculateStudyHours
,它应该根据Semester
类的Weeks
和StartDate
属性计算学习时间。
我在WPF类中创建了一个Semester
对象,我正在传递由用户提供的构造函数weeks
和startDate
值。
private void btnEnter_Click(object sender, RoutedEventArgs e)
{
int weeks = int.Parse(txtbWeeks.Text);
DateTime startDate = (DateTime)dteDate.SelectedDate;
Semester s = new Semester(weeks, startDate);
ModuleListHandler.semesterDetails.Add(s);
MessageBox.Show("Semester details added successfully");
btnNext.Visibility = Visibility.Hidden;
}
Semester
class
namespace TimeManagementClassLibrary
{
public class Semester
{
public int Weeks { get; set; }
public DateTime StartDate { get; set; }
//default constructor
public Semester()
{
}
public Semester(int weeks, DateTime startdate)
{
Weeks = weeks;
StartDate = startdate;
}
}
}
CalcDisplay
class
public class CalcDisplay
{
//Method calculating study hours
public double CalculateStudyHours()
{
return (credits * 10 / weeks) - classHours;
}
}
将credits
和weeks
参数传递给CalcDisplay
类的最有效方法是什么?
除了我的评论,让我们想象你有3个类:
public class Semester
{
public int Weeks { get; set; }
public Semester() { }
public Semester(int weeks)
{
Weeks = weeks;
}
}
public class Credit
{
public int Credits { get; set; }
public Credit() { }
public Credit(int credits)
{
Credits = credits;
}
}
public class SomeClass
{
public int ClassHours { get; set; }
public SomeClass() { }
public SomeClass(int classHours)
{
ClassHours = classHours;
}
}
你显然会创建它们的实例,并以某种方式设置/计算Weeks
,Credits
,ClassHours
的值。
然后使用这些值作为参数传递给另一个类的方法:
public class CalcDisplay
{
// May be static as uses passed in arguments values, non class members
public static double CalculateStudyHours(int credits, int weeks, int classHours)
{
return (credits * 10 / weeks) - classHours;
}
}
并从某处传递它们:
private void btnEnter_Click(object sender, RoutedEventArgs e)
{
// Get values in some way
int weeks = int.Parse(txtbWeeks.Text);
int credits = int.Parse(txtbCredits.Text);
int classHours = int.Parse(txtbClassHours.Text);
// Create your instances
Semester s = new Semester(weeks);
Credit c = new Credit(credits);
SomeClass sc = new SomeClass(classHours);
// Then pass it's properties values
double result = CalcDisplay.CalculateStudyHours(c.Credits, s.Weeks, sc.ClassHours);
}
或者CalcDisplay
类可以有自己的字段/属性,你可以通过它的构造函数设置:
public class CalcDisplay
{
private int credits;
private int weeks;
private int classHours;
// Constructor
public CalcDisplay() {}
public CalcDisplay(int credits, int weeks, int classHours)
{
this.credits = credits;
this.weeks = weeks;
this.classHours = classHours;
}
// Non-static as we use class members
public double CalculateStudyHours()
{
return (credits * 10 / weeks) - classHours;
}
}
private void btnEnter_Click(object sender, RoutedEventArgs e)
{
// ... same as upper
CalcDisplay = new CalcDisplay(c.Credits, s.Weeks, sc.ClassHours);
double result = c.CalculateStudyHours();
}