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 779759
In Process

The Archive Base Latest Questions

Editorial Team
  • 0
Editorial Team
Asked: May 14, 20262026-05-14T19:58:34+00:00 2026-05-14T19:58:34+00:00

I am implementing my own ArrayList for school purposes, but to spice up things

  • 0

I am implementing my own ArrayList for school purposes, but to spice up things a bit I’m trying to use C# 4.0 Code Contracts. All was fine until I needed to add Contracts to the constructors. Should I add Contract.Ensures() in the empty parameter constructor?

    public ArrayList(int capacity) {
        Contract.Requires(capacity > 0);
        Contract.Ensures(Size == capacity);

        _array = new T[capacity];
    }

    public ArrayList() : this(32) {
        Contract.Ensures(Size == 32);
    }

I’d say yes, each method should have a well defined contract. On the other hand, why put it if it’s just delegating work to the “main” constructor? Logicwise, I wouldn’t need to.

The only point I see where it’d be useful to explicitly define the contract in both constructors is if in the future we have Intelisense support for contracts. Would that happen, it’d be useful to be explicit about which contracts each method has, as that’d appear in Intelisense.

Also, are there any books around that go a bit deeper on the principles and usage of Design by Contracts? One thing is having knowledge of the syntax of how to use Contracts in a language (C#, in this case), other is knowing how and when to use it. I read several tutorials and Jon Skeet’s C# in Depth article about it, but I’d like to go a bit deeper if possible.

Thanks

  • 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. Editorial Team
    Editorial Team
    2026-05-14T19:58:35+00:00Added an answer on May 14, 2026 at 7:58 pm

    I completely disagree with Thomas’s answer. As long as you are making choices in the implementation of ArrayList(), you should have a contract for it that document these choices.

    Here, you are making the choice of calling the main constructor with argument 32. There are many other things that you could have decided to do (not just concerning the choice of the default size). Giving a contract to ArrayList() that is almost identical to that of ArrayList(int) documents that you decided not to do most of the silly things you could have done instead of calling it directly.

    The answer “it calls the main constructor, so let the main constructor’s contract do the job” completely ignores the fact that the contract is there to save you from having to look at the implementation. For a verification strategy based on run-time assertion checking, the disadvantage of writing contracts even for such short constructors/methods that almost directly call another constructor/method is that you end up checking things twice. Yes, it seems redundant, but run-time assertion checking is only one verification strategy, and DbC’s principles are independent from it. The principle is: if it can be called, it needs a contract to document what it does.

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

Sidebar

Related Questions

I'm implementing my own matrix math for an OpenGL application. So far, things are
I was implementing my own ArrayList class and was left surprised when I realised
For a personal project I have been implementing my own libstdc++. Bit by bit,
Basically, I am implementing own cache system. Ideally, it'll look like this: $CACHE->start($name); //CODE
I'm implementing my own user messaging feature in my application, but I'm having difficulty
I'm currently working on implementing my own Trie in Scala (for learning/hobby purposes), and
I'm implementing my own named pipe Client/Server class, but I'm getting too much troubles
I'm implementing my own BigNumber class in C# for educational purposes. For a start,
i'm just trying out the new font-face feature in css3 for implementing own ttf/otf
I am implementing my own shell. But to supprt for command history, I need

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.