How to declare a variable for global use

2019-05-22 08:38发布

I've searched forum for similar issues and as I understand, global variables is to be avoided. For me that is not logical yet, as I'm new to programming. If I've understood all this correctly, a static variable should do the job that I'm looking for.

I've made a combobox of four choices in the mainwindow and when a comboboxitem is selected, variable b is declared. This is done in a private void SelectionChanged.

When the comboboxitem declaring variable b is selected, a usercontrol pops up. I want to use variable b further in my program, but I can't access it. I've tried to declare static int b; in the beginning of the code, but I'm not sure if I understand the use of a static variable correctly. Can someone please help me?

4条回答
三岁会撩人
2楼-- · 2019-05-22 08:55

It is possible to create a variable for global use. Just create static field or property:

public static class YourStorage
{
   public static object Storage1;
   public static string StringStorage;
} 

And wherever you want, you can just set or get values from that storage:

public class AnotherClass
{
   private void GetDataFromStorage()
   {
      string getValue=YourStorage.StringStorage; 
   }
   private void SetDataFromStorage()
   {
       YourStorage.StringStorage="new value"; 
   }  
}
查看更多
放荡不羁爱自由
3楼-- · 2019-05-22 09:04

Avoid global variables and static keyword at all unless you 100% sure there is no other address your solution (sometimes you might be forced to use statics typically with legacy code hot fixes).

  1. Statics/globals make tight code coupling
  2. Breaks OOD principles (Typically Dependency Injection, Single Responsibility principles)
  3. Not so straightforward type initialization process as many think
  4. Sometimes makes not possible to cover code by unit test or break ATRIP principles for good tests (Isolated principle)

So suggestion:

  1. Understand Problem in the first place, roots, what are you going to achieve
  2. Review your design
查看更多
smile是对你的礼貌
4楼-- · 2019-05-22 09:07

you can do this insted

App.Current.Properties["valueTobestored"] = valueTobestored;

And later access it like

string mystoredValue = Convert.ToString(App.Current.Properties["valueTobestored"]); 
查看更多
该账号已被封号
5楼-- · 2019-05-22 09:07

To create a "global variable", it should be public and static, and declared in a public static class. In .NET it's a common way to declare constants (e.g. Math.PI), but they're not variables!

public static class EveryoneCanSeeMe
{
    public static object EveryOneCanModifyMe;
}

non-public variables are only visible in classes or methods where they're declared.

ps: using global variables is very bad.

查看更多
登录 后发表回答