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

  • SEARCH
  • Home
  • 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 6595435
In Process

The Archive Base Latest Questions

Editorial Team
  • 0
Editorial Team
Asked: May 25, 20262026-05-25T17:56:21+00:00 2026-05-25T17:56:21+00:00

I need to take a Widget that already has several property values set. I

  • 0

I need to take a Widget that already has several property values set. I need to change the Widget’s name. I’m drawn toward Option 3, but I’m having a hard time articulating why.

public void Do(Widget widget) { // 1
    widget.Name = "new name";
}

public void Do(ref Widget widget) { // 2
    widget.Name = "new name";
}

public Widget Do(Widget widget) { // 3
    widget.Name = "new name";
    return widget;
}

I’d like to play Devil’s Advocate with a few questions and gather responses, to help me explain why I’m drawn to Option 3.

Option 1 : Why not just modify the Widget that’s passed in? You’re only “returning” one object. Why not just use the object that’s passed in?

Option 2 : Why not return void? Why not just communicate in the signature that you’ll be using the actual memory pointer to the parameter object itself?

Option 3 : Isn’t it weird to you that you’re returning the same object you’re passing in?

  • 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-25T17:56:22+00:00Added an answer on May 25, 2026 at 5:56 pm

    Option 1: This is the most common approach – you do not need ref if you don’t want to modify the reference itself. Make sure that you name your method appropriately so the expectation is that the passed object is indeed modified.

    Option 2: This is only useful if you want to change the passed reference itself, i.e. create a new Widget instance or set the reference to point to an existing widget (this might be useful if you want to keep overall number of instances low if they all have the same properties, see Flyweight pattern, generally the returned widgets should be immutable in this case though and you would use a factory instead). In your case this does not seem appropriate.

    Option 3: This allows for a fluent “builder” approach – also has its benefits, i.e chaining of changes to the Widget which some people consider more expressive and self-documenting. Also see Fluent interface

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

Sidebar

Related Questions

I need to take a BufferedImage and convert it to YCbCr format so that
Pretty straight forward question, I have a GtkEntry widget that I want to set
Need to take a SELECT drop down list options and find if any of
I need to take a web page and extract the address information from the
I need to take a paragraph of text and extract from it a list
I need to take production data with real customer info (names, address, phone numbers,
I need to take an existing xml file, and modify just a few attributes
I need to take an existing winforms application and drop into an event tracing
i need to take some row. They came from sql TARIH (sql column) is
I need to take a C++ vector with potentially a lot of elements, erase

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.