How to declare a variable for global use

浪子不回头ぞ 提交于 2019-12-08 01:14:16

问题


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?


回答1:


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



回答2:


you can do this insted

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

And later access it like

string mystoredValue = Convert.ToString(App.Current.Properties["valueTobestored"]); 



回答3:


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"; 
   }  
}



回答4:


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.



来源:https://stackoverflow.com/questions/35083652/how-to-declare-a-variable-for-global-use

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!