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

时间:2015-05-11 04:47:33

标签: c# object methods

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

stud1.setGrade(90);  stud1.setGrade(100);  stud1.setGrade(90);  stud1.setGrade(50);

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

stud1.setGrade(90)
     .setGrade(100)
     .setGrade(70);

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

6 个答案:

答案 0 :(得分:11)

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

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);

(当然你不必把它写成扩展名。)