include::../why-dotnet.adoc[] == How to fix it === Code examples ==== Noncompliant code example [source,csharp,diff-id=1,diff-type=noncompliant] ---- private List _foo = new List { "a", "b", "c" }; public IEnumerable Foo // Noncompliant: expensive ToList call { get { return (string[])_foo.Clone(); } } ---- ==== Compliant solution [source,csharp,diff-id=1,diff-type=compliant] ---- private List _foo = new List { "a", "b", "c" }; public IEnumerable GetFoo() { return (string[])_foo.Clone(); } ---- == Resources === Documentation * https://learn.microsoft.com/en-us/dotnet/csharp/programming-guide/classes-and-structs/properties[Properties (C# Programming Guide)] * https://learn.microsoft.com/en-us/dotnet/csharp/programming-guide/classes-and-structs/fields[Fields (C# Programming Guide)] * https://learn.microsoft.com/en-us/dotnet/csharp/programming-guide/concepts/collections[Collections (C#)] * https://learn.microsoft.com/en-us/dotnet/api/system.linq.enumerable.tolist[Enumerable.ToList] * https://learn.microsoft.com/en-us/dotnet/api/system.linq.enumerable.toarray[Enumerable.ToArray] * https://learn.microsoft.com/en-us/dotnet/api/system.array.clone[Array.Clone] include::../rspecator.adoc[]