Sign Up

Sign Up to our social questions and Answers Engine to ask questions, answer people’s questions, and connect with other people.

Have an account? Sign In

Have an account? Sign In Now

Sign In

Login to our social questions & Answers Engine to ask questions answer people’s questions & connect with other people.

Sign Up Here

Forgot Password?

Don't have account, Sign Up Here

Forgot Password

Lost your password? Please enter your email address. You will receive a link and will create a new password via email.

Have an account? Sign In Now

You must login to ask a question.

Forgot Password?

Need An Account, Sign Up Here

Please briefly explain why you feel this question should be reported.

Please briefly explain why you feel this answer should be reported.

Please briefly explain why you feel this user should be reported.

Sign InSign Up

The Archive Base

The Archive Base Logo The Archive Base Logo

The Archive Base Navigation

  • Home
  • SEARCH
  • About Us
  • Blog
  • Contact Us
Search
Ask A Question

Mobile menu

Close
Ask a Question
  • Home
  • Add group
  • Groups page
  • Feed
  • User Profile
  • Communities
  • Questions
    • New Questions
    • Trending Questions
    • Must read Questions
    • Hot Questions
  • Polls
  • Tags
  • Badges
  • Buy Points
  • Users
  • Help
  • Buy Theme
  • SEARCH
Home/ Questions/Q 75769
In Process

The Archive Base Latest Questions

Editorial Team
  • 0
Editorial Team
Asked: May 10, 20262026-05-10T20:34:05+00:00 2026-05-10T20:34:05+00:00

The code looks like below: namespace Test { public interface IMyClass { List<IMyClass> GetList();

  • 0

The code looks like below:

namespace Test {     public interface IMyClass     {         List<IMyClass> GetList();     }      public class MyClass : IMyClass     {         public List<IMyClass> GetList()         {             return new List<IMyClass>();         }     } } 

When I Run Code Analysis i get the following recommendation.

Warning 3 CA1002 : Microsoft.Design : Change ‘List’ in ‘IMyClass.GetList()’ to use Collection, ReadOnlyCollection or KeyedCollection

How should I fix this and what is good practice here?

  • 1 1 Answer
  • 0 Views
  • 0 Followers
  • 0
Share
  • Facebook
  • Report

Leave an answer
Cancel reply

You must login to add an answer.

Forgot Password?

Need An Account, Sign Up Here

1 Answer

  • Voted
  • Oldest
  • Recent
  • Random
  1. 2026-05-10T20:34:06+00:00Added an answer on May 10, 2026 at 8:34 pm

    To answer the ‘why’ part of the question as to why not List<T>, The reasons are future-proofing and API simplicity.

    Future-proofing

    List<T> is not designed to be easily extensible by subclassing it; it is designed to be fast for internal implementations. You’ll notice the methods on it are not virtual and so cannot be overridden, and there are no hooks into its Add/Insert/Remove operations.

    This means that if you need to alter the behavior of the collection in the future (e.g. to reject null objects that people try to add, or to perform additional work when this happens such as updating your class state) then you need to change the type of collection you return to one you can subclass, which will be a breaking interface change (of course changing the semantics of things like not allowing null may also be an interface change, but things like updating your internal class state would not be).

    So by returning either a class that can be easily subclassed such as Collection<T> or an interface such as IList<T>, ICollection<T> or IEnumerable<T> you can change your internal implementation to be a different collection type to meet your needs, without breaking the code of consumers because it can still be returned as the type they are expecting.

    API Simplicity

    List<T> contains a lot of useful operations such as BinarySearch, Sort and so on. However if this is a collection you are exposing then it is likely that you control the semantics of the list, and not the consumers. So while your class internally may need these operations it is very unlikely that consumers of your class would want to (or even should) call them.

    As such, by offering a simpler collection class or interface, you reduce the number of members that users of your API see, and make it easier for them to use.

    • 0
    • Reply
    • Share
      Share
      • Share on Facebook
      • Share on Twitter
      • Share on LinkedIn
      • Share on WhatsApp
      • Report

Sidebar

Ask A Question

Stats

  • Questions 60k
  • Answers 60k
  • Best Answers 0
  • User 1
  • Popular
  • Answers
  • Editorial Team

    How to approach applying for a job at a company ...

    • 7 Answers
  • Editorial Team

    How to handle personal stress caused by utterly incompetent and ...

    • 5 Answers
  • Editorial Team

    What is a programmer’s life like?

    • 5 Answers
  • added an answer Here's a great article by the guy who implemented IE's… May 11, 2026 at 9:33 am
  • added an answer You can provide a handler for the DataGridView's CellFormatting event,… May 11, 2026 at 9:33 am
  • added an answer You want the :not selector $('a:not([rel=facebox],[href^=mailto])'); EDIT: I stole your… May 11, 2026 at 9:33 am

Related Questions

The code looks like below: namespace Test { public interface IMyClass { List<IMyClass> GetList();
At the moment my code looks like this: # Assign values for saving to
My current code looks like the following. How can I pass my array to
My code looks like this NSNumber *inputToNumber = [NSNumber numberWithFloat:[textField.text floatValue]]; the value from
I have code that looks like the following, which works fine for displaying the
I'm seeing some code I've inherited that looks like the following: @interface SomeClass (private)
I have a ton of repeating code in my class that looks like the
I'm just trying to time a piece of code. The pseudocode looks like: start
How does the code looks that would create an object of class: string myClass
I'm embedding MSBuild directly into a more complex build tool. The relevant code looks

Trending Tags

analytics british company computer developers django employee employer english facebook french google interview javascript language life php programmer programs salary

Top Members

Explore

  • Home
  • Add group
  • Groups page
  • Communities
  • Questions
    • New Questions
    • Trending Questions
    • Must read Questions
    • Hot Questions
  • Polls
  • Tags
  • Badges
  • Users
  • Help
  • SEARCH

Footer

© 2021 The Archive Base. All Rights Reserved
With Love by The Archive Base

Insert/edit link

Enter the destination URL

Or link to existing content

    No search term specified. Showing recent items. Search or use up and down arrow keys to select an item.