代码之家  ›  专栏  ›  技术社区  ›  KalleP

在if/else中找不到按钮的变量

  •  2
  • KalleP  · 技术社区  · 8 年前

    我想为ios和android留一个不同的空间,所以我尝试创建if/else,但是当then按钮位于if/else中时,找不到mybutton,如下所示:

    if (Device.RuntimePlatform == Device.iOS)
            {
                var MyButton = new Button
                {
                    Margin = new Thickness(0, -15, 0, 0)                    
                };
    
            }
            else
            {
                var MyButton = new Button
                {
                    Margin = new Thickness(-10, -15, 0, 0)                   
                };
    
            }           
    
            var MyStackLayout = new StackLayout
            {
                Children = { MyButton }               
            };
    

    名称MyButton在当前上下文中不存在。 有办法解决这个问题吗?

    2 回复  |  直到 8 年前
        1
  •  2
  •   Saeed Bolhasani    8 年前

    更改代码如下:

        Button MyNewButton;
        if (Device.RuntimePlatform == Device.iOS)
        {
            MyNewButton= new Button
            {
                Margin = new Thickness(0, -15, 0, 0)                    
            };
    
        }
        else
        {
            MyNewButton= new Button
            {
                Margin = new Thickness(-10, -15, 0, 0)                   
            };
    
        }           
    
        var MyStackLayout = new StackLayout
        {
            Children = { MyNewButton}               
        };
    

    在if body中定义变量时,不能从if body中访问该变量。 如果您使用相同的名称(mybutton)声明变量,请更改此按钮名称。

        2
  •  0
  •   EvZ    8 年前

    正如人们多次提到的,问题是 MyButton 生活在一个错误的范围。什么是示波器?

    变量的范围决定了它对 程序。在C基础教程中的示例中, 变量已在方法中定义。当以这种方式创建时, 变量的作用域是声明之后的整个方法。 这意味着变量可以在方法中使用,但是 当控件传递到另一个方法时,变量不可用。

    你可以读到更多 here .