【问题标题】:Do Non-Static things from Static, C#?从静态,C# 做非静态的事情?
【发布时间】:2016-12-19 16:16:29
【问题描述】:

我正在使用 c# 为安装在 Raspberry pi 3 上的 Windows IoT 开发一个小型 UWP 应用程序。但是,我想要这样做:

button.Visibility = Visibility.Visible;
button1.Visibility = Visibility.Collpsed;

那段代码我想把它保存在一个静态方法中:)。我还没有找到任何有用的答案。我希望你们能给我一个简单快速的解决方案。

【问题讨论】:

  • 您不能在静态方法中与非静态成员交互。如果你想这样做,你需要将一个实例传递给静态方法(或以其他方式维护对实例的静态引用),此时你可能只是使该方法成为非静态方法。跨度>
  • @CollinD -- 你的评论就是答案,不是吗?为什么将其发布为评论而不是答案?
  • 如果buttonbutton1 是静态方法的参数,它可以工作。这是唯一的方法。
  • @rory.ap 这不是一个特别好的答案,而且我现在没有时间去做。

标签: c# visual-studio raspberry-pi3 windows-10-iot-core


【解决方案1】:

如果你想保持静态,你必须传递按钮

public static void DoStuff(Button button, Button button1)
{
    button.Visibility = Visibility.Visible;
    button1.Visibility = Visibility.Collpsed;
}

【讨论】:

    【解决方案2】:

    作为 Kevin 已经足够回答的第二个选项,如果您一次使用一个按钮,则可以使用扩展方法完成类似的操作。对于扩展方法所在的命名空间,您将需要一个 using 语句。

    扩展方法是一种将实例方法添加到现有类的方法。

    MSDN - Extension Methods

    例如:

    public static class ButtonExtensions
    {
        public static void SetVisibility(this Button button, Visibility visibility)
        {
           button.Visibility = visibility;
        }
    }
    

    用法:

    public void Test()
    {
        Button button = new Button();
        Visibility visibility = Visibility.Collapsed;
    
        button.SetVisibility(visibility);
    
        //or
        ButtonExtensions.SetVisibility(button, visibility);
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-01-17
      • 1970-01-01
      • 2014-01-22
      • 1970-01-01
      • 2014-05-18
      • 1970-01-01
      • 2010-10-22
      相关资源
      最近更新 更多