标签: static-variables

118
推荐指数
3
解决办法
3万
查看次数

在C#中使用静态变量有什么用?什么时候用?为什么我不能在方法中声明静态变量?

我在C#中搜索过静态变量,但我仍然没有得到它的用途.另外,如果我尝试在方法中声明变量,它将不会授予我执行此操作的权限.为什么?

我看过一些关于静态变量的例子.我已经看到我们不需要创建类的实例来访问变量,但这还不足以理解它的用途以及何时使用它.

第二件事

class Book
{
    public static int myInt = 0;
}

public class Exercise
{
    static void Main()
    {
        Book book = new Book();

        Console.WriteLine(book.myInt); // Shows error. Why does it show me error?
                                       // Can't I access the static variable 
                                       // by making the instance of a class?

        Console.ReadKey();
    }
}
Run Code Online (Sandbox Code Playgroud)

c# static static-variables

98
推荐指数
6
解决办法
30万
查看次数

接口实现中静态变量的含义是什么?

在接口的实现中定义时,我不太了解静态变量.在方法中,我确实理解它们与局部变量的区别,但不是直接在实现中定义的.

看看这些例子.这两者实际上有什么区别?

#include "MyClass.h"

@implementation MyClass
int myInt;
...
@end
Run Code Online (Sandbox Code Playgroud)

和:

#include "MyClass.h"

@implementation MyClass
static int myInt;
...
@end
Run Code Online (Sandbox Code Playgroud)

myInt在两种情况下,所有方法都可以看到,如果我解释了一个正确运行的测试,那么myInt在这两种情况下,对于不同类的实例,它们都是相同的变量.

variables static objective-c static-variables

68
推荐指数
4
解决办法
10万
查看次数

C++静态初始化顺序

当我在C++中使用静态变量时,我常常想要初始化一个变量,将另一个变量传递给它的构造函数.换句话说,我想创建彼此依赖的静态实例.

在单个.cpp或.h文件中,这不是问题:将按照声明的顺序创建实例.但是,如果要使用另一个编译单元中的实例初始化静态实例,则无法指定顺序.结果是,根据天气,可能会发生构建依赖于另一个实例的实例,并且之后才构建另一个实例.结果是第一个实例初始化不正确.

有谁知道如何确保以正确的顺序创建静态对象?我已经搜索了很长时间寻找解决方案,尝试了所有这些解决方案(包括Schwarz Counter解决方案),但我开始怀疑有一个确实有效.

一种可能性是使用静态函数成员的技巧:

Type& globalObject()
{
    static Type theOneAndOnlyInstance;
    return theOneAndOnlyInstance;
}
Run Code Online (Sandbox Code Playgroud)

实际上,这确实有效.遗憾的是,您必须编写globalObject().MemberFunction()而不是globalObject.MemberFunction(),从而导致一些令人困惑和不雅的客户端代码.

更新:感谢您的反应.遗憾的是,我确实似乎回答了自己的问题.我想我必须学会忍受它......

c++ static-variables initialization-order static-order-fiasco

62
推荐指数
4
解决办法
5万
查看次数

我什么时候应该在课堂上使用静态方法?有什么好处?

我有静态变量的概念,但静态方法在类中有什么好处.我曾经参与过一些项目,但我并没有将方法设为静态.每当我需要调用类的方法时,我创建该类的对象并调用所需的方法.

问:方法中的静态变量即使在执行方法时仍保持其值,但只能在其包含的方法中访问,但静态方法的最佳定义是什么?

问:调用静态方法而不创建该类的对象是静态方法的唯一好处吗?

问:静态方法的可访问范围是多少?

谢谢

oop static-methods static-variables

62
推荐指数
5
解决办法
5万
查看次数

C++静态成员变量及其初始化


对于C++类中的静态成员变量 - 初始化在类外部完成.我想知道为什么?对此有任何逻辑推理/约束吗?或者它是纯粹的遗留实现 - 标准不想纠正?

我认为在类中初始化更"直观"而且不那么混乱.它还给出了变量的静态和全局性.例如,如果您看到静态const成员.

c++ initialization static-variables

48
推荐指数
2
解决办法
5万
查看次数

什么使静态变量只初始化一次?

我注意到如果在代码中初始化C++中的静态变量,初始化仅在您第一次运行该函数时运行.

这很酷,但是如何实现?它是否转化为某种扭曲的if语句?(如果给出一个值,那么..)

void go( int x )
{
    static int j = x ;
    cout << ++j << endl ; // see 6, 7, 8
} 

int main()
{
    go( 5 ) ;
    go( 5 ) ;
    go( 5 ) ; 
}
Run Code Online (Sandbox Code Playgroud)

c++ variables static static-variables

46
推荐指数
2
解决办法
3万
查看次数

即使在Java中初始化子类之后,静态变量的值也没有改变

当我y通过使用Checks.y(Checks作为子类)调用静态变量时,不执行静态块,y并且不会更新值.

class Par {
    static int y = 4;
}

class Checks extends Par {
    static {
        y = 5;
    }
}

public class Check {
    public static void main(String args[]) {
        System.out.println(Checks.y); // here printing 4
    }
}
Run Code Online (Sandbox Code Playgroud)

由于静态在所有子类之间共享,因此应该更新该值.

它背后的原因是什么?

java inheritance jvm static-block static-variables

32
推荐指数
2
解决办法
1448
查看次数

.LIB和.OBJ文件有什么区别?(Visual Studio C++)

我知道.OBJ是编译一个编译单元的结果,而.LIB是一个静态库,可以从几个.OBJ创建,但这种差异似乎只是在编译单元的数量.还有其他区别吗?是相同还是不同的文件格式?

当想知道在链接到最终可执行文件期间是否合并了两个(或更多).LIB中定义的相同静态变量时,我遇到了这个问题.对于.OBJ,变量是合并的.但是在.LIBs中它是一样的吗?

c++ linker static-variables static-libraries object-files

26
推荐指数
2
解决办法
1万
查看次数

可以使用静态变量来缓存ASP.net中的信息吗?

目前我正在使用ASP.net上的C#3.5开发项目管理应用程序.为了减少对数据库的命中,我使用静态变量缓存了大量信息.例如,用户列表在静态类中保存在内存中.该类在启动时从数据库中读取所有信息,并在更改时更新数据库,但它永远不需要从数据库中读取.

该类在写入数据库的同时将更新的信息与其他Web服务器(如果存在)绑定.pinging机制是一个Windows服务,缓存对象使用随机可用端口进行注册.它也用于其他事情.

数据量并不是那么好.目前我正在使用它来缓存用户(密码哈希,权限,名称,电子邮件等).它只是保存了一堆对数据库的调用.

我想知道这种方法是否有任何陷阱和/或是否有更好的方法来缓存数据?

c# asp.net caching static-variables

23
推荐指数
1
解决办法
8723
查看次数