如果这听起来太不可能了,请不要投票:)只是我的怪癖,我想知道如果我可以传递一个属性作为参数传递给函数来获得一些结果。是否有可能通过属性作为参数
例如,
void delete_button_click()
{
foreach (DataGridViewRow row in dgvRecords.SelectedRows)
dgvRecords.Rows.Remove(row);
}
并假设
void delete_all_button click()
{
foreach (DataGridViewRow row in dgvRecords.Rows)
dgvRecords.Rows.Remove(row);
}
我可以写上面的两个代码在一个函数,因为唯一的区别是SelectedRows
和Rows
。事情是这样的:
void button_click (/*DataGridView property rows*/)
{
foreach (DataGridViewRow row in dgvRecords.rows)
dgvRecords.Rows.Remove(row);
}
,并调用它
{
button_click(DataGridView.Rows);
//and
button_click(DataGridView.SelectedRows);
}
另如,
decimal GetAmount1(User usr)
{
decimal sum = 0;
foreach (DataGridViewRow row in dgvRecords.Rows)
{
Tuple<User, User, Notification, Acknowledgment> tup = (Tuple<User, User, Notification, Acknowledgment>)row.Tag;
if (tup.Item1 == usr)
sum += tup.Item4.Sum;
}
return sum;
}
和
decimal GetAmount2(User usr)
{
decimal sum = 0;
foreach (DataGridViewRow row in dgvRecords.Rows)
{
Tuple<User, User, Notification, Acknowledgment> tup = (Tuple<User, User, Notification, Acknowledgment>)row.Tag;
if (tup.Item2 == usr)
sum += tup.Item4.Sum;
}
return sum;
}
在上面的代码唯一的区别只是一个属性。因此,这是可供选择:
decimal GetAmount(User usr, Tuple<User, User, Notification, Acknowledgment>.Property Item)
{
decimal sum = 0;
foreach (DataGridViewRow row in dgvRecords.Rows)
{
Tuple<User, User, Notification, Acknowledgment> tup = (Tuple<User, User, Notification, Acknowledgment>)row.Tag;
if (tup.Item == usr)
sum += tup.Item4.Sum;
}
return sum;
}
而且拨打:
{
GetAmount(usr, Tuple<User, User, Notification, Acknowledgment>.Item1)
//and
GetAmount(usr, Tuple<User, User, Notification, Acknowledgment>.Item2)
}
?
可能重复的[如何传递一个类的属性作为方法的参数?](http://stackoverflow.com/questions/1178574/how-can-i-pass-a-property-of -a-class-as-a-parameter-of-method) – nawfal