Conosco in C #, per impostazione predefinita, le variabili di tipo referenziate sono passate per riferimento a un metodo. Ho una funzione che a volte ho solo bisogno del suo valore di ritorno e talvolta entrambi restituiscono il valore e le modifiche sull'oggetto di input sono necessarie al di fuori della funzione.
Quindi l'ho scritto come segue:
public static List<RuleSet> Load(XmlDocument dom= null)
{
if (dom == null)
{
dom = new XmlDocument();
}
string path = ...
dom.Load(path);
List<RuleSet> ruleSets = new List<RuleSet>();
// load the dom with file and read rules
return ruleSets;
}
A volte ho bisogno del dom
al di fuori della funzione e lo chiamo Load(dom)
e quando ho solo bisogno del valore restituito lo chiamo Load()
.
Tuttavia, so se il parametro è stato dichiarato con ref
Non ho potuto impostare un valore predefinito per esso e ci deve essere un motivo per se, ma ora l'ho fatto senza problemi.
Quindi sospetto che il mio approccio al problema (la mia funzione sopra) sia corretto o no, o potrebbe essere implementato in un modo migliore?