我必须将方法应用于C#中的对象,但我必须多次执行
stud1.setGrade(90); stud1.setGrade(100); stud1.setGrade(90); stud1.setGrade(50);
你明白了......事情是我知道有办法避免这种情况,只是这样说:
stud1.setGrade(90)
.setGrade(100)
.setGrade(70);
但是我不记得在C#中是否正确,我在另一种编程语言中看到它,尽管我不记得这是否是正确的做法。
答案 0 :(得分:11)
为什么不将要设置的值添加到数组中,然后使用foreach调用.setGrade? p>
int[] values = int[] {90, 100, 70};
foreach(int value in values)
{
stud1.setGrade(value);
}
答案 1 :(得分:9)
让printf("%02x ", (unsigned char)buf[i]);
返回SetGrade
。
this
答案 2 :(得分:3)
当setGrade()返回自身的实例或者编写一个名为setGrade()(对于类)返回其自身实例的扩展方法时,这应该是可能的。
public static Student SetGrade(this Student student, int value) {
student.setGrade(value);
return student;
}
然后可以使用类似于:
stud1.SetGrade(90)
.SetGrade(100)
.SetGrade(70);
答案 3 :(得分:3)
让我向您介绍List的概念。 List
是用于存储同类数据的数据结构。您可以将[{1}}用于您的方案。
List
答案 4 :(得分:0)
这可以采用 n 数量的值..
private void SetGrade(params int[] grades)
{
foreach (var grade in grades)
{
this.Grade = grade;
}
}
调用SetGrade
方法更容易:
SetGrade(90, 100, 70);
答案 5 :(得分:0)
如果您无权访问该课程(或作为练习),您还可以使用params
关键字撰写扩展程序。
public static class StudentExtensions
{
public static void SetGrades(this Student student, params int[] values)
{
foreach (int grade in values)
{
student.SetGrade(grade);
}
}
}
你可以像这样使用它:
stud1.SetGrades(90, 100, 70, 50);
(当然你不必把它写成扩展名。)