如何避免在 C# 中重复 "object.method()"?
How to avoid repeating "object.method()" in C#?
我必须在 C# 中对一个对象应用一个方法,但我必须多次这样做
stud1.setGrade(90); stud1.setGrade(100); stud1.setGrade(90); stud1.setGrade(50);
你明白了……我知道有一种方法可以避免这种情况,就这样说吧:
stud1.setGrade(90)
.setGrade(100)
.setGrade(70);
但我不记得这在 C# 中是否正确,我在另一种编程语言中看到过它,但我不记得那是否是正确的做法。
刚好有SetGrade
returnthis
.
public Student SetGrade(int grade) {
this.Grade = grade;
return this;
}
为什么不将要设置的值添加到数组中,然后使用 foreach 调用 .setGrade?
int[] values = int[] {90, 100, 70};
foreach(int value in values)
{
stud1.setGrade(value);
}
当 setGrade() returns 自身的一个实例,或者当您编写一个名为 setGrade() 的扩展方法(对于 class),returns 一个实例时,这应该是可能的本身。
public static Student SetGrade(this Student student, int value) {
student.setGrade(value);
return student;
}
这可以类似于以下方式使用:
stud1.SetGrade(90)
.SetGrade(100)
.SetGrade(70);
我给大家介绍一下List的概念。 List
是一种存储同构数据的数据结构。您可以根据您的情况使用 List
。
List<int> myGrades=new List<int>();
myGrades.Add(90);
myGrades.Add(100);
myGrades.Add(70); //adding all the grades
//we will use foreach to loop through all the elements
foreach(int g in myGrades)
{
stud1.setGrade(g); //all grades are set
}
这可以取 n 个值..
private void SetGrade(params int[] grades)
{
foreach (var grade in grades)
{
this.Grade = grade;
}
}
调用SetGrade
方法更简单:
SetGrade(90, 100, 70);
如果您无法访问 class(或作为练习),您也可以使用 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);
(当然不一定要写成扩展)
我必须在 C# 中对一个对象应用一个方法,但我必须多次这样做
stud1.setGrade(90); stud1.setGrade(100); stud1.setGrade(90); stud1.setGrade(50);
你明白了……我知道有一种方法可以避免这种情况,就这样说吧:
stud1.setGrade(90)
.setGrade(100)
.setGrade(70);
但我不记得这在 C# 中是否正确,我在另一种编程语言中看到过它,但我不记得那是否是正确的做法。
刚好有SetGrade
returnthis
.
public Student SetGrade(int grade) {
this.Grade = grade;
return this;
}
为什么不将要设置的值添加到数组中,然后使用 foreach 调用 .setGrade?
int[] values = int[] {90, 100, 70};
foreach(int value in values)
{
stud1.setGrade(value);
}
当 setGrade() returns 自身的一个实例,或者当您编写一个名为 setGrade() 的扩展方法(对于 class),returns 一个实例时,这应该是可能的本身。
public static Student SetGrade(this Student student, int value) {
student.setGrade(value);
return student;
}
这可以类似于以下方式使用:
stud1.SetGrade(90)
.SetGrade(100)
.SetGrade(70);
我给大家介绍一下List的概念。 List
是一种存储同构数据的数据结构。您可以根据您的情况使用 List
。
List<int> myGrades=new List<int>();
myGrades.Add(90);
myGrades.Add(100);
myGrades.Add(70); //adding all the grades
//we will use foreach to loop through all the elements
foreach(int g in myGrades)
{
stud1.setGrade(g); //all grades are set
}
这可以取 n 个值..
private void SetGrade(params int[] grades)
{
foreach (var grade in grades)
{
this.Grade = grade;
}
}
调用SetGrade
方法更简单:
SetGrade(90, 100, 70);
如果您无法访问 class(或作为练习),您也可以使用 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);
(当然不一定要写成扩展)