如果/ else,无法找到内部按钮的变量

时间:2018-06-08 06:22:44

标签: c# if-statement xamarin xamarin.forms

我希望iOS和Android有不同的余量,所以我试图制作if / else但是当按钮在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 个答案:

答案 0 :(得分:2)

更改您的代码如下:

    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),请更改此按钮名称。

答案 1 :(得分:0)

正如多次提到的那样,问题是MyButton生活在一个错误的范围内。什么是范围?

  

变量的范围决定了它对其余部分的可见性   程序。在整个C#Fundamentals教程的示例中,   变量已在方法中定义。以这种方式创建时,   变量的范围是声明后的整个方法。   这意味着变量可以在方法中使用但是   当控制传递给另一个方法时,变量不可用。

您可以详细了解here

相关问题