[Windows Store App 開發筆記] 在C#中的全域變數─利用靜態static宣告

[Windows Store App 開發筆記] 在C#中的全域變數─利用靜態static宣告

前言

 


http://social.msdn.microsoft.com/Forums/zh-TW/3c789d46-42a5-4645-96c4-873ac9aa4ee8

 

最近在開發app,遇到要在頁面中傳遞參數的種種問題,就想到說能否利用全域變數,實現讓整個專案去共用的某個變數,就找到了以上的網站。

 

利用static宣告靜態成員,靜態成員不需要用new建立物件就能直接使用,只要透過類別名稱加上「‧」直接呼叫public靜態成員即可。

 

以下是一個簡單的範例程式,我們可以看到不管在MainPage或是Page2中,都能夠自由使用staticDemo類別下的靜態成員str。

 

實作

 


1. MainPage.xaml

   1: <Grid Background="{ThemeResource ApplicationPageBackgroundThemeBrush}">
   2:     <Button x:Name="NextBtn" Content="下一頁" HorizontalAlignment="Left" Margin="72,84,0,0" VerticalAlignment="Top" Height="78" Width="178" FontSize="24" Click="NextBtn_Click"/>
   3:     <TextBlock x:Name="Show" HorizontalAlignment="Left" Margin="75,210,0,0" TextWrapping="Wrap" VerticalAlignment="Top" Height="50" Width="240" FontSize="36"/>
   4: </Grid>

 

2. MainPage.xaml.cs

   1: public class staticDemo
   2:     {
   3:         public static string str = "I am static";
   4:     }
   5:     public sealed partial class MainPage : Page
   6:     {
   7:         public MainPage()
   8:         {
   9:             this.InitializeComponent();
  10:             Show.Text = staticDemo.str;
  11:         }
  12:  
  13:         private void NextBtn_Click(object sender, RoutedEventArgs e)
  14:         {
  15:             this.Frame.Navigate(typeof(Page2));
  16:         }
  17:         
  18:     }

 

3. Page2.xaml

   1: <Grid Background="{ThemeResource ApplicationPageBackgroundThemeBrush}">
   2:     <Button Content="上一頁" HorizontalAlignment="Left" Margin="294,118,0,0" VerticalAlignment="Top" Height="80" Width="176" FontSize="24" Click="Button_Click"/>
   3:     <TextBlock x:Name="Show" HorizontalAlignment="Left" Margin="297,249,0,0" TextWrapping="Wrap" VerticalAlignment="Top" Height="50" Width="240" FontSize="36"/>
   4: </Grid>

 

4. Page2.xaml.cs

   1: public sealed partial class Page2 : Page
   2: {
   3:     public Page2()
   4:     {
   5:         this.InitializeComponent();
   6:         Show.Text = staticDemo.str;
   7:     }
   8:  
   9:     private void Button_Click(object sender, RoutedEventArgs e)
  10:     {
  11:         this.Frame.GoBack();
  12:     }
  13: }

 

執行結果:

7

8

 

結論:雖然說全域變數很強大,但變數一多很容易混亂產生錯誤,程式的效能也會不佳,所以只要偶爾使用就好,對於解決一些小問題是相當方便的。