• 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

    • Microsoft, Indian police bust AI-powered tech support scam ring targeting elderly in Japan by Paul Hill Pop-up scams pretending to be Microsoft Working with India’s Central Bureau of Investigation (CBI), Microsoft recently assisted in busting a scam network that was targeting the elderly in Japan. The CBI raided 19 locations on May 28, leading to the arrest of six key operatives and the taking down of two call centers. The scammers were impersonating Microsoft specifically and using tech support scams against Japanese seniors. The raid led to the seizure of both digital and physical infrastructure, including computers, storage devices, and phones. The scammers were targeting older adults, who are more vulnerable to fraud. To put this activity to an end, Microsoft’s Digital Crimes Unit (DCU), the Japan Cybercrime Control Center (JC3), Japan’s National Police Agency (NPA), and India’s CBI conducted significant cross-border collaboration to trace the criminals. Thanks to the internet, cross-border crimes like these have been around for a while and multinational tech firms like Microsoft are making significant efforts to help law enforcement agencies crack down on cybercrime. Artificial intelligence is also starting to be used to make more sophisticated scams. The evolving threat This case reveals an evolution in how Microsoft’s DCU addresses cybercrime involving tech support fraud. Thanks to AI, scammers have been able to scale their operations. In response, Microsoft has moved away from focusing on individual call centers to target the heads of criminal operations and disrupting their technical infrastructure. Notably, Microsoft’s collaboration with JC3 is the first time the DCU has partnered with a Japan-based organization to assist victims. Microsoft is continually getting tips from JC3 about malicious pop-ups urging recipients to call fake technical support lines that claim to be Microsoft. This data has allowed Microsoft to shut down 66,000 malicious domains and URLs globally since May 2024. Microsoft noted that artificial intelligence is now being used by criminals to scale their operations. Some ways in which these entities leverage AI are for victim identification, writing convincing scam emails and building fake web pages, as well as for convincing translations. Anyone can use AI for malicious purposes so it could increase the number of people or groups carrying out attacks. It also makes attacks much more sophisticated and harder to detect and necessitates better consumer protections and more sophisticated security tools such as passkeys to reduce hacks. Protecting vulnerable populations and what readers can do Tech support fraud attacks have been found by the FBI to disproportionately affect older people, resulting in $590 million in losses in 2023 for just older Americans alone. In this operation that targeted Japanese victims, around 90% of the 200 affected people were over 50. If you’ve ever received suspicious communications from a party claiming to be Microsoft, you should know that Microsoft never sends unsolicited emails or makes phone calls requesting personal or financial information, and it doesn’t offer unsolicited tech support. If you do get any suspicious communications, then you should report it to Microsoft so that it can take action.
    • Firefox is irrelevant in today's internet. Most websites don't work as smooth as any Chromium browsers. Web developers are monopolizing and responsible for this situation.
    • Best to just move along with that one, they only post nonsense to rile people up.
  • Recent Achievements

    • Week One Done
      luxoxfurniture earned a badge
      Week One Done
    • First Post
      Uranus_enjoyer earned a badge
      First Post
    • Week One Done
      Uranus_enjoyer earned a badge
      Week One Done
    • Week One Done
      jfam earned a badge
      Week One Done
    • First Post
      survivor303 earned a badge
      First Post
  • Popular Contributors

    1. 1
      +primortal
      432
    2. 2
      +FloatingFatMan
      239
    3. 3
      snowy owl
      213
    4. 4
      ATLien_0
      211
    5. 5
      Xenon
      157
  • Tell a friend

    Love Neowin? Tell a friend!