Я хотел прокомментировать ответ Эрика Липперта, но новые пользователи не могут комментировать посты. Итак, я думаю, что у меня есть такое использование.
Посмотрите на этот код:
private void SetGridColumns(ref RegistryKey targetKey, List<ColInfo> cols)
{
string targetKeyName = Path.GetFileName(targetKey.Name);
m_grids.DeleteSubKeyTree(targetKeyName, false);
targetKey.Close();
targetKey = m_grids.CreateSubKey(targetKeyName);
// ...
}
public void SetColumns(List<ColInfo> cols, bool youth)
{
RegistryKey key = youth ? m_youthGrid : m_mainGrid;
SetGridColumns(ref key, cols);
}
Это должно работать так:
В SetColumns я вызываю SetGridColumns с ключом в зависимости от параметра «молодежь». Я хотел бы, чтобы мой ключ был сначала удален, а затем воссоздан. m_mainGrid, конечно, является членом класса.
В этом случае ключ действительно удаляется и воссоздается. Но воссоздан только "targetKey" в SetGridColumns, а не мой m_mainGrid.
Итак, единственное, что я могу здесь сделать, - это использовать указатели, что не является предпочтительным способом в C #.
Если бы я мог только сделать:
ref RegistryKey key = youth ? m_youthGrid : m_mainGrid;
все должно работать нормально.