在 C# 中使用静态变量是否会阻碍安全编码实践?

Does the use of Static Variables in C# hinder secure coding practices?

我是 C# 编程的新手,目前我的代码中使用了很多静态变量。下面是一个例子:

class Program
{
    public int I//Can be used to access the variable i anywhere from the code as it is public
    {
        get { return i; }
        set { i = value; }
    }

    static int i = 0; // A private static integer
    static void Main(string[] args)
    {
        i = 1;// The main function is changing this integer
    }

    void reset() { 
        i = 0;// another function is changing the value of integer i
    }
}

class otherclass 
{
    void otherreset()
    {
        Program program = new Program();
        program.I = 1;// another function in another class is changing the value of integer i(indirectly)   

    }

}
  1. 静态变量 i 可用于 class 中的所有函数。
  2. 然后是 I,它与代码中的每个函数共享 i,因为它是 public。 - 不确定我是否应该这样做。

我确实找到了关于 using static variables in C# 的帖子,但我想知道,从安全角度来看,这是否是标准做法。我担心变量在整个程序执行过程中驻留在内存中的相同位置。

一般来说,还有其他更好的方法可以在各种函数之间共享变量吗?

static int i = 0; // A private static integer

您在这里声明了一个静态成员。到目前为止一切顺利。

static void Main(string[] args)
{
    int i = 1;// The main function is changing this integer
}

不,不是。 int i 表示您声明了一个名为 new 的局部变量 i.

void reset() { 
    int i = 0;// another function is changing the value of integer i
}

不,不是。 int i 表示您声明了一个名为 new 的局部变量 i.

I'd like to know if this is a standard practice from a security perspective.

不,它不是,不,它与安全无关。您应该避免 尽可能多地使用静态成员。我认为 的实际原因目前与您当前的知识和理解水平相去甚远。仅将其作为最佳实践。

I am concerned that the variable resides in the same location in memory throughout the execution of the program.

好吧,在内存位置之间 'travel' 的变量不是一个好主意 :-) 非常简单地说,变量是内存中的命名位置。

are there any other better ways in general to share a variable between various functions.

是的,首先要了解函数参数、成员字段和属性。使用任何可用的初学者 C# 书籍,或在线搜索。