有没有可能在c# 4.5中存储临时整数值?

本文关键字:存储 整数 有可能 | 更新日期: 2023-09-27 18:04:14

我正在创建WPF应用程序。我需要在一个方法中的某个变量中存储一个临时值,我需要在另一个方法中获取该值。是否有任何可能的方法来存储临时值在一个变量使用WPF?


从评论:

private void Button_Click(object sender, RoutedEventArgs e) 
{ 
    count++; 
    for (int i = 1; i <= count; i++) 
    { 
        var tb = new TextBox(); 
        mycanvas.Children.Add(tb);  
        tb.Name = "txtbox"+i; 
        tb.Width = 100;  
        Canvas.SetLeft(tb,50); 
        Canvas.SetTop(tb, i*20); 
    } 
} 

有没有可能在c# 4.5中存储临时整数值?

我想你在这里有一点误解…WPF (Windows Presentation Foundation)是一项取代WinForms的技术…

存储临时整数将完全像在WinForms, Console应用程序或dll中一样完成。

您可以将其保存为其他方法可以看到的变量(取决于它在哪里),或者将其作为参数发送。

如果你在谈论MVVM,事情会变得更有趣,但你仍然可以存储和发送临时变量…

话虽如此,您也可以在应用程序设置中隐藏变量,并根据需要使用它们(或可以设置它们的默认值)。这里有更多关于这个选项的信息:MSDN:应用程序设置概述.


如果你想在每个i上做一些事情,Jossef Harush是正确的,否则(或额外)你也可以做下面的事情:

private int global_variable_name;
private void Button_Click(object sender, RoutedEventArgs e) 
{ 
    count++; 
    for (int i = 1; i <= count; i++) 
    { 
        var tb = new TextBox(); 
        mycanvas.Children.Add(tb);  
        tb.Name = "txtbox"+i; 
        tb.Width = 100;  
        Canvas.SetLeft(tb,50); 
        Canvas.SetTop(tb, i*20); 
        // You can set global_variable_name here, but it'll be 
        // silly to set it to `i`, since it's changing
        global_variable_name = 8;
    } 
} 
private void SomeOtherMethod() {
    // you can use global_variable_name here
    var sum = global_variable_name + 3;
}

欢迎来到StackOverflow,我同意@Noctis的回答。

另外(看了你的评论后),

如果你想把当前循环的索引传递给一个自定义方法,你应该这样做:

    private void Button_Click(object sender, RoutedEventArgs e)
    {
        int count = 10;
        count++; 
        for (int i = 1; i <= count; i++) 
        {
            var tb = new TextBox();
            mycanvas.Children.Add(tb); 
            tb.Name = "txtbox" + i; 
            tb.Width = 100; 
            Canvas.SetLeft(tb, 50); 
            Canvas.SetTop(tb, i * 20); 
            // My custom method
            MyMethod(i);
        }
    }
    private void MyMethod(int i)
    {
        // Do something with i
        Console.WriteLine(i);
    }