如何避免在C#中重复"object.method()"?

Joh*_*ran 7 c# methods object

我必须将方法应用于C#中的对象,但我必须多次执行

stud1.setGrade(90);  stud1.setGrade(100);  stud1.setGrade(90);  stud1.setGrade(50);
Run Code Online (Sandbox Code Playgroud)

你明白了......事情是我知道有办法避免这种情况,只需这样说:

stud1.setGrade(90)
     .setGrade(100)
     .setGrade(70);
Run Code Online (Sandbox Code Playgroud)

但我不记得在C#中是否正确,我在另一种编程语言中看到它,尽管我不记得这是否是正确的方法.

Gan*_* R. 11

为什么不将要设置的值添加到数组中,然后使用foreach调用.setGrade?

int[] values = int[] {90, 100, 70};

foreach(int value in values)
{
  stud1.setGrade(value);
}
Run Code Online (Sandbox Code Playgroud)


Joh*_*ers 9

SetGrade回来this.

public Student SetGrade(int grade) {
    this.Grade = grade;
    return this;
}
Run Code Online (Sandbox Code Playgroud)


小智 3

当 setGrade() 返回其自身的实例时,或者当您编写一个名为 setGrade() (对于类)的扩展方法来返回其自身的实例时,这应该是可能的。

public static Student SetGrade(this Student student, int value) {
  student.setGrade(value);
  return student;
}
Run Code Online (Sandbox Code Playgroud)

然后可以使用类似于:

stud1.SetGrade(90)
 .SetGrade(100)
 .SetGrade(70);
Run Code Online (Sandbox Code Playgroud)