如果這聽起來太不可能了,請不要投票:)只是我的怪癖,我想知道如果我可以傳遞一個屬性作爲參數傳遞給函數來獲得一些結果。是否有可能通過屬性作爲參數
例如,
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