Before I post this question I've read

I want to get an answer of the truth with my question

Why doesn't Array class expose its indexer directly? [closed]

for design my class in the correct way, but the question get closed by the reason of not constructive.

By the declaration of not constructive:
As it currently stands, this question is not a good fit for our Q&A format.

  • According to Bart's answer before:
    We need a good single question related to a practical problem you face ... I want you to ask me a single, self-contained question.
    Thus, should I change the question to
    What should my ToArray method return?
    Would that be better?

We expect answers to be supported by
facts - Does it closed because of there are no answer supported by facts with my question?
references - I can't figure out the references myself, but not implying nobody does. If I can always done it myself, then I would not ask.
or specific expertise - Does it closed because of the question can be answered without specific expertise?
but this question will likely solicit
debate - I'm not expecting that.
arguments - What for?
polling - Opinion poll? No, I expect the truth for the why.
or extended discussion - Then don't extended it, just tell me why.

  • 6
    Possibly because you're asking why something is implemented like this, and only the developers of the programming language would know, thus leading to speculation. (NB: I don't have the slightest clue about C#)
    – slhck
    Jan 26, 2013 at 16:19
  • I'm on the "hardly any clue about C# front" as well. But if you ask about the "why?" of a language feature (which your title suggests) then that's not constructive along the lines of @slhck's comment. It might lead to extended discussion/debate about the motivation. That's what such questions invite. Saying "Then don't extended it, just tell me why." is not going to change that.
    – Bart
    Jan 26, 2013 at 16:26
  • I would think there might be something I don't understand with semantically meaningful, or the truth that I didn't get it. Okay, and now, how can I improve/correct it?
    – Ken Kin
    Jan 26, 2013 at 16:33
  • 2
    If the "Why?" is the only question you have about this (which it seems you do), I'm not so sure if this can be saved. It seems you understand how it works, but are looking for the motivation. If you have no other question than that, I wouldn't know how to modify it.
    – Bart
    Jan 26, 2013 at 16:39
  • 1
    I want to understand why, because if it is only for backward compatibilities, than I should rather let my method returns object[] for the reason of no better choice in my scenario, otherwise Array.
    – Ken Kin
    Jan 26, 2013 at 16:48
  • I'm worried about that I might get into this situation in the future. Is there a way to prevent?
    – Ken Kin
    Jan 26, 2013 at 17:04
  • 1
    @KenKin: your question should be about the actual problem you face. Knowing why the language was designed like that won't change the fact that it is designed that way, so an answer to the design question won't directly solve your problem. Ask how you can work around the limitation you're seeing/problem you're facing. (Also Programmers.SE does handle some language design questions. Example. Might be worth your time checking out their comprehensive faq).
    – Mat
    Jan 26, 2013 at 17:20
  • 1
    Thanks to all of you. I just think that: knowing why helps knowing how.
    – Ken Kin
    Jan 26, 2013 at 17:42
  • 2
    @Ken Kin: I agree with you entirely on that. But on Stack Overflow, ask for how - good answers will also explain the why part when it matters.
    – Mat
    Jan 26, 2013 at 17:54
  • I've just tried to describe my question more clearly.
    – Ken Kin
    Jan 26, 2013 at 22:22

2 Answers 2


Yes, to a small extent you have misunderstood. I saw this appear in the re-open queue and spent quite a while working out why it was closed before voting for it to remain that way.

The reason for the closure is explained pretty well in Alexei Levenkov's upvoted comment (my emphasis):

KenKin I vote to close and removing my guess answer why it was done that way. Unless Eric Lippert decides that your question is insanely interesting you have more or less no chance to dig inner reasons of "why". My guess is "no explicit demand for feature and works", but it is just that - guess.

I don't know that I can say it better than that. Unless the designer of the language passes by and decides to answer your question any answer will be a guess, and therefore not very useful for the future. He might, he's a Stack Overflow user but it doesn't seem likely. If he'd like to answer it he can always flag your question for moderator attention to get it reopened.

To go over the points in the close reason; as the question is not answerable by the wider community they cannot supply facts, references or specific expertise. They will instead have to rely on guesswork and discussion.

  • Eric Lippert until recently worked on Microsoft and steered C#, and served on the C# language committee. He wasn't the original designer of C#, but he was the closest we had to that, and if you look at some of his highest voted answers, stackoverflow.com/users/88656/… you will see that the bolded part of your quote is actually pretty likely. Jan 26, 2013 at 17:18
  • I know it's possible @Kate. Likely? That's up to him. If needs be, he can flag for moderator attention and request a ping when it's reopened. I'd be against leaving questions open when there's only one person who can answer them on the entire site. It's uncomfortably close to asking a question of a specific user especially as they will fill up with fluff answers in the mean time and it might set a precedent for the time that user leaves (or goes on holiday etc). Jan 26, 2013 at 17:28
  • i agree, actually - most of the time these "why is it done that way?" questions are unanswerable, but even when they're answerable, they're still offtopic here. What will the OP do differently upon knowing? I didn't follow the comment about object[] but it's possible there's an answerable question lurking inside the offtopic one Jan 26, 2013 at 17:31
  • Wow.. a huge list. I don't konw how to search the keywords with particular user's answer yet.
    – Ken Kin
    Jan 26, 2013 at 17:32
  • There's some help on the search page @kenkin... some are well worth a read. Jan 26, 2013 at 17:33
  • 4
    Questions can be brought to my attention via the contact page on my blog, though of course I do not guarantee that I'll get to them; I'm busy drinking from a fire hose of static analysis knowledge these days. In this particular case I don't know why Array was designed that way. Rather than trying to figure it out, I'd spend my time trying to figure out why you'd want to use Array at all instead of T[], which seems like the far better choice. Jan 27, 2013 at 8:03
  • 4
    And in general yes, it is very difficult for me or anyone else to answer "why?" questions. (And "why not?" questions are worse.) C# got the way it is today through a design process that has spent several dozen man-hours a week of arguing about features for over thirteen years; trying to tease out the answer to a "why" question from that can be very difficult. Jan 27, 2013 at 8:06
  • @Eric Lippert: Thank you very much. I'm sorry about that if it was considered "trying to tease out". I ask because I faced to the problem to figure out why recently. Before the moment, I just wrote "working code". Now I'm trying to design, and avoiding to be beaten with something how I designed it for no reason.
    – Ken Kin
    Jan 27, 2013 at 20:45
  • 5
    “Unless Eric Lippert decides that your question is insanely interesting you have more or less no chance to dig inner reasons of "why".” This is nonsense. First, there are other people in the world who understand language design. Second, “this question requires too much expertise” is not a close reason. Jan 28, 2013 at 19:25

No, you didn't misunderstand “not constructive”. Your problem is that a large part of the Stack Overflow community does not understand the topic of your question. This is fairly common with language design questions.

Programming language design is a science, albeit a poorly-understood one. There are reasons to make this or that choice, which can have to do with nice theoretical properties, ease of implementation, performance, etc. To complicate matters, language design is also a historical process, so sometimes the reason is “we didn't understand the implications at the time” or “the author of the spec made a typo”. Both kinds of answers call on facts and specific expertise. The former kind is considerably more interesting than the latter, but usually if the asker had known he wouldn't have needed to ask.

Programming language design is on-topic on Stack Overflow because it has a direct impact on programming. It is also on-topic on Computer Science since programming language design is a branch of CS. Unlike the SO community, the CS.SE community understands CS, so I think your question would get a warm reception. However, the CS.SE community is vastly smaller than the SO community. In practical terms, you are far more likely to reach someone who knows the answer on SO than on CS.SE.

(As an advocate and moderator of CS.SE, I hope this will change. Hey, y'all programming language designers, come and join us on Computer Science!)

  • 2
    Knowing principles of language design still won't allow you to answer this question as written because it is a specific question as to why a particular team of designers made this decision. Knowing general principles would only allow you to proffer some possible explanations. Jan 28, 2013 at 20:21
  • 3
    @MartinSmith And this is a problem because? It's ok to post answers even if you aren't completely sure that they're correct and complete. Especially if your answer is interesting whether or not it's the ultimate answer to that question. Jan 28, 2013 at 20:38

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .