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

The Archive Base Latest Questions

Editorial Team
  • 0
Editorial Team
Asked: May 11, 20262026-05-11T00:55:18+00:00 2026-05-11T00:55:18+00:00

Just a general question about what the best practice is: public void Foo() {

  • 0

Just a general question about what the best practice is:

public void Foo() {     int x = 5;     myControl.Click += (o, e) =>     {         x = 6;     }; } 

Notice, I’m using the x variable inside my lambda event handler.

OR:

public class Bar {     private int x = 5;     public void Foo()     {         Control myControl = new Control();         myControl.Click += new EventHandler(myControl_Click);     }      private void myControl_Click(object sender, EventArgs e)     {         x = 6;     } } 

Here, x is a private member of the class, and therefore I have access to it in my event handler.

Now let’s say I don’t need x anywhere else in the code (for whatever reason), which method is the better way to go?

  • 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-11T00:55:19+00:00Added an answer on May 11, 2026 at 12:55 am

    It depends on your need. In the first example, the side-effects of your event handler are limited to method scope, and in the second, the side-effects are instance scoped. I think that using a closure in terms of your first example serves no purpose since X isn’t used anywhere, so it’s hard to determine based on your examples.

    That being said, it is generally best to treat event handlers (that you create in code) as you would variables. Scope them as narrowly as you can, and refactor them to broader scope as needed.

    A better example that highlights when you should use a closure is as follows:

    public void Subscribe(Action<string> messageCallBack) {     myButton.Click += () => messageCallBack('Button was clicked.'); } 

    This allows multiple subscribers, and is much simpler than the alternative:

    private readonly List<Action<string>> callBacks; public MyClass() {     callBacks = new List<Action<string>>();     myButton.Click += myButton_Click; }  private myButton_Click(object sender, EventArgs e) {     foreach (Action<string> callBack in callBacks)     {         callBack('Button was clicked');     } }  public void Subscribe(Action<string> messageCallBack) {     callBacks.Add(messageCallBack); } 
    • 0
    • Reply
    • Share
      Share
      • Share on Facebook
      • Share on Twitter
      • Share on LinkedIn
      • Share on WhatsApp
      • Report

Sidebar

Ask A Question

Stats

  • Questions 132k
  • Answers 132k
  • 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
  • Editorial Team
    Editorial Team added an answer It turns out I was not freeing the resources of… May 12, 2026 at 6:24 am
  • Editorial Team
    Editorial Team added an answer The AccessDataSource inherits from the SqlDataSource class. It therefore provides… May 12, 2026 at 6:24 am
  • Editorial Team
    Editorial Team added an answer In the first case you are selecting the list elements… May 12, 2026 at 6:24 am

Related Questions

Just a very general question, that not only applies to this example. Let's say
I had a webmethod working which returned a byte array to the caller: public
One of the biggest issues currently holding me back from diving full steam into
Yes, I realize this question was asked and answered, but I have specific questions

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.