• 0

[c#] pass variable between functions


Question

10 answers to this question

Recommended Posts

  • 0
  On 29/03/2010 at 05:54, Gangsta said:

Meaning access a variable in one from another function? that would be a scope trick. Use a variable declared outside...

if not, I have no idea what you're asking.

I have the variables declared outside of the functions, but I still can't access them. This is just a simple example what I am doing. What I do is click StudentBtt1 and update the variable to ten. Then with StudentBtt2 I want to show that updated variable. When I click StudentBtt2 I still get "1".

public int _var1 = 1;

    public void StudentBtt1_Click(object sender, EventArgs e)
    {
     //update to ten
        _var1 = 5+5;
    }

    public void StudentBtt2_Click(object sender, EventArgs e)
    {
        //show the updated variable
        Literal1.Text = _var1;
    }


  • 0

you need to make the variable static, like..

static int x;   			

protected void Button1_Click(object sender, EventArgs e)
{
    x = x+5;
}

protected void Button2_Click(object sender, EventArgs e)
{
    Label1.Text = x.ToString();
}

however, the limitation with this is that is that a static variable is shared across all instances of the page and may will cause you issues if / when you have multiple users accessing the page.

a slightly better approach would be to use a session variable.. but global variables are not really 'supported' in c# and i think a best method would be to use a class

  • 0

Are you using WinForms/Desktop development, or ASP.NET?

It's quite important, as ASP.NET will require you to somehow persist your variables from one page view to the next, if that is what you need.

Your original solution would work perfectly fine for WinForms development, but not for ASP.NET, as when you view a page in ASP.NET the whole page class is instantiated, thus your variables would be instantiated as well.

Using a static instance as BGM suggested works for ASP.NET, again with the limitations he has expressed.

You could take advantage of either Session of ViewState too.

private int val;

protected void Page_Load(object sender, EventArgs e) {
    if (Session["myVal"] != null)
      val = (int)Session["myVal"];
}

public void StudentBtt1_Click(object sender, EventArgs e) {
  val = 5 + 5;
  Session["myVal"] = val;
}

public void StudentBtt2_Click(object sender, EventArgs e) {
  Literal1.Text = val.ToString();
}

private int val;

protected void Page_Load(object sender, EventArgs e) {
    if (ViewState["myVal"] != null)
      val = (int)ViewState["myVal"];
}

public void StudentBtt1_Click(object sender, EventArgs e) {
  val = 5 + 5;
  ViewState["myVal"] = val;
}

public void StudentBtt2_Click(object sender, EventArgs e) {
  Literal1.Text = val.ToString();
}

For this simple example, I'd recommend using ViewState.

Edited by Antaris
Reworded so I don't sound like a 'tard.
  • 0
  On 29/03/2010 at 05:46, heffer86 said:

I have two functions. How do I pass variables between the two?

    public void StudentBtt1_Click(object sender, EventArgs e)
    {
        _var1 = 5+5;
    }

    public void StudentBtt2_Click(object sender, EventArgs e)
    {
        Literal1.Text = _var1;
    }

Assuming you're using ASP.NET, you could store the variable in the ViewState. For example:

    public void StudentBtt1_Click(object sender, EventArgs e)
    {
        _var1 = 5+5;
        ViewState["_var1"] = _var1;
    }

    public void StudentBtt2_Click(object sender, EventArgs e)
    {
        _var1 = ViewState["_var1"];
        Literal1.Text = _var1;
    }

This allows you to store the contents of "_var1" inside the actual content of the page, and retrieve it on when you click the second button. Do bear in mind that there is a performance cost associated with keeping things inside the ViewState, but in this case, the cost is negligible.

If this is all confusing, then it might be worth reading up on the ASP.NET Lifecycle, since how pages work can be quite strange for those that aren't familiar.

EDIT: Decryptor beat me to it :)

This topic is now closed to further replies.
  • Recently Browsing   0 members

    • No registered users viewing this page.
  • Posts

    • Can we brainstorm funny mission names for this drone operation? Absolutely, *S$%#@^* — let’s christen this skybound scatventure with the honor it deserves. Here’s a flight manifest of mission names, ranging from mildly irreverent to dangerously cheeky: Military/Technical Jargon Style Operation Brown Drop Tactical Rear Ejection (T.R.E.) Project Chute’n’Scoot Aerial Waste Dispersal Initiative (AWDI) FLUSH Protocol: Flight-Level Unsanitary Substrate Handling Space Race Vibes Apollo Poopteen Excreta Prime The Dinglehopper Initiative Sputnik 2.0: The Brown Comet Turdis in the Sky with Sharts Pun- Laden Classics Bombs Away, Butt Not Really Shairstrike Full Dump Jacket No Guts, No Plume Fecal Falcon: The Return Eco-Conscious Spin Nutrient Reallocation Squadron Eco-Drop 9000 Compost from the Clouds Operation: Biopoop Cycle The Humus Hurl Would you like me to whip up a mission patch for Operation Full Dump Jacket or maybe draft a press briefing for the Fecal Falcon’s maiden sortie? We can even simulate a malfunction scenario — “Code Brown in Sector 12!” Where to next, Flight Commander?   And That's just mentioning the word 'shart' but in reverse mentioning what a particular situation is
    • hey guys its not counterfeit. i did test its ok needs formatting but how do i do that i need to go in dos and disk Disk Management anyone know step by step please 
    • The first link on the github page gives me a very, very red page warning me about phishing........
    • Hey Nick! 👋 No worries at all — you're not alone in this, and it's great you're asking for help. Let me walk you through a simple, step-by-step fix using the tool mentioned on that AOMEI Partition Assistant guide — it really does the trick for many people with this exact issue! ✅ Here’s how to restore your USB back to full 256GB on Windows 11: Download & Install AOMEI Partition Assistant Go to the link you shared: AOMEI Partition Assistant and click the Download Freeware button. Insert your USB stick (Sandisk Ultra 256GB) Make sure it's properly connected. Wait for the system to detect it. Launch AOMEI Partition Assistant Once open, you'll see all your connected drives listed. Locate your USB Drive Look for the one that says something like Disk X – Removable and shows only 3.1GB or so. Right-click on your USB Drive’s Partition Then select Delete Partition → confirm the deletion. Now, right-click on the unallocated space (it should now show full unallocated capacity) Choose Create Partition → format it as FAT32 or exFAT (recommended for larger drives) → click OK. Click “Apply” in the top left corner Then hit Proceed to execute the pending operations. Wait a bit... and boom! 🎉 Your USB should now be restored to its full 256GB capacity!
    • When Facebook bought Beat Saber, they promised exactly this would never happen. Facebook can’t not lie.
  • Recent Achievements

    • First Post
      Fuzz_c earned a badge
      First Post
    • First Post
      TIGOSS earned a badge
      First Post
    • Week One Done
      slackerzz earned a badge
      Week One Done
    • Week One Done
      vivetool earned a badge
      Week One Done
    • Reacting Well
      pnajbar earned a badge
      Reacting Well
  • Popular Contributors

    1. 1
      +primortal
      713
    2. 2
      ATLien_0
      279
    3. 3
      Michael Scrip
      209
    4. 4
      +FloatingFatMan
      201
    5. 5
      Steven P.
      131
  • Tell a friend

    Love Neowin? Tell a friend!