关于C#:不同文件中的相同静态变量


same static variable in different files

本问题已经有最佳答案,请猛点这里访问。

嗨,我欢迎大家回答这个问题。Q1)如果文件1.c包含静态int a;文件2.c包含静态int a;

如果这两个文件是同一项目的一部分。

如果是这样,编译会抛出任何错误吗?为什么?如果它不会抛出任何错误,为什么?正如我们用同样的……?

q2)静态变量x;在prog1.c中声明,我们如何使用prog2.c中x的值?

告诉我另一种方法,不通过prog1.c中全局声明的函数返回值发送值

注意:有人告诉我关于get和set函数,我们如何使用它来获取静态var值….是否有其他方法来获取该值?


"static"关键字的关键是它意味着变量(或函数)只在定义它的文件中可用。所以这两个变量是完全独立的。因此,没有错误,也不可能从另一个文件访问其中一个。


嗯,事实上这是一个面试问题,我告诉他删除静态变量之前,他说我只想访问我文件中的静态变量,告诉我如何获取这个值?

我告诉他全局声明一个函数并返回静态变量,因为函数只通过调用那个函数返回值,我们可以得到这个值?他说一些获取和设置函数用法,而不是从函数返回。我不知道的事情…

我甚至意识到,如果我们想打破静态的规则,将VaR定义为静态的意义是什么。或许这个问题很愚蠢…或者有一种访问私有变量的方法….


如果是这样,编译会抛出任何错误吗?为什么?如果它不会抛出任何错误,为什么?正如我们用同样的……?

不不。它有针对特定文件的范围,在该文件中,它声明了由于static存储类的原因。对全局变量和函数使用static意味着它们只对该翻译单元可见。

q2)静态变量x;在prog1.c中声明,我们如何使用prog2.c中x的值?

由于static的原因,您不能再次将其外部化。它对声明它的源文件是私有的。

编辑:

你说我如何从一个文件访问静态变量。但是这样做,static关键字的含义是什么?最好的方法就是删除static关键字。

通过糟糕的编码方式,您可以使用类似的函数访问。

1
2
3
4
5
6
static int myvar;


int * accesssaticvar() {
   return &myvar;
}