问题标签 [static-members]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
c++ - 如何在 C++ 中初始化私有静态成员?
在 C++ 中初始化私有静态数据成员的最佳方法是什么?我在我的头文件中尝试了这个,但它给了我奇怪的链接器错误:
我猜这是因为我无法从类外初始化私有成员。那么最好的方法是什么?
c++ - 为什么我不能在 VS2008 的类中使用静态成员,例如静态结构?
当我在 VS 2008 中编写这样的代码时:
然后我像这样初始化我的结构:
编译器给出以下错误:
“模式”:“::”左侧的符号必须是类型“ptSelect”:不是“QueryValidate”的成员
我究竟做错了什么?这是 Visual Studio 还是我的代码的问题?我知道除了 const 之外的静态成员必须在声明它们的类之外定义。
c# - lock(objlocker) 是否使该对象在应用程序范围内线程安全?静态成员是否自动线程安全?
当您锁定一个对象时,该对象是否在整个应用程序中都被锁定?
例如,这个来自 C# 3.0 的简而言之第 19.6.1 节“线程安全和 .NET 框架类型”中的片段:
是否第一次锁定:
阻止另一个线程访问:
还是可以同时执行?
CLR 会自动使您的静态方法线程安全吗?还是这取决于开发商?
谢谢,约翰
asp.net - ASP.NET 应用程序状态与静态对象
如果我有一个标准的 ASP.NET 应用程序,那么将对象设为静态与将对象实例置于应用程序状态之间有什么区别吗?
据我了解,这两个对象在应用程序域中都存在一次。
其次,如果您在引用的 dll 中有一个静态对象,对于 ASP.NET 站点,会发生什么情况。它也是应用程序域的一部分,所以它总是存在一次?
xaml - 如何为 WPF 故事板中的静态对象设置动画
我有一个 WPF 程序,我需要添加一个“演示模式”。因为我希望我的设计人员能够修改演示模式,而不必每次都重新编译程序,所以我认为使用来自外部 XAML 文件的情节提要是一个好主意。“演示模式”基本上是一个故事板,为应用程序的一些依赖属性设置动画。
为了公开我的应用程序的 DP,我创建了应用程序类的公共静态成员(单例),以便应用程序的 DP 始终在外部可用。在这种情况下,故事板将访问它们。
在外部 XAML 文件中,我添加了正确引用应用程序的命名空间/程序集的正确 xmlns。所以理论上,我应该能够在 Storyboard 中访问应用程序的 DP。
问题是,当未在 XAML 中声明/命名对象时,我不知道如何在 Storyboard 中为静态对象的 DP 设置动画。声明情节提要动画帧时,情节提要的唯一附加属性是Storyboard.TargetName和Storyboard.TargetProperty。
如果有人能给我一个提示,让我朝着正确的方向前进,我将不胜感激。
c++ - 我应该使用静态数据成员吗?(C++)
让我们考虑一个 C++ 类。在执行开始时,我想从 XML 文件中读取一组值并将它们分配给此类的 7 个数据成员。这些值在整个执行过程中不会改变,它们必须由相关类的所有对象/实例共享。静态数据成员是实现此行为的最优雅方式吗?(当然,我不考虑全局变量)
java - 静态字段是否为垃圾收集打开?
给定一个仅在程序设置中使用的假设实用程序类:
myObject 在不再使用时会被垃圾收集,还是会在程序的生命周期内一直存在?
c++ - 如何创建对模板类执行操作的静态模板成员函数?
我正在尝试创建一个从 std::vector 中删除重复项的通用函数。因为我不想为每个向量类型创建一个函数,所以我想让它成为一个模板函数,可以接受任何类型的向量。这是我所拥有的:
我不断收到链接器错误,但它编译得很好。关于我做错了什么的任何想法?
更新:根据 Iraimbilanja 给出的答案,我去重写了代码。但是,以防万一有人想让工作代码执行 RemoveDuplicates 函数,这里是:
事实证明,如果我在签名中指定 std::vector,迭代器将无法正常工作。所以我不得不采用更通用的方法。此外,当擦除 compareIter 时,循环的下一次迭代会产生指针异常。擦除后 compareIter 的后减量可以解决该问题。我还修复了迭代器比较和第二个循环中 compareIter 初始化中的错误。
更新 2:
我看到这个问题又得到了赞成票,所以我想用一个更好的算法来更新它,这个算法使用了一些 C++14 的优点。我的前一个只有在向量中存储的类型实现 operator== 并且它需要一堆副本和不必要的比较时才有效。而且,事后看来,没有必要让它成为一个类的成员。这种新算法允许自定义比较谓词,在发现重复项时缩小比较空间,并显着减少副本数量。名称已更改为erase_duplicates
更好地符合 STL 算法命名约定。
c# - 静态变量应该用枚举代替吗?
所以我正在查看一些签入的代码,我很困惑:
问检查它的人,他认为使用枚举而不是静态变量要好得多,比这更好:
于是我们开始争论。我的论点是他使用枚举作为存储值的一种方式(如果有两个枚举符号具有相同的值,它将中断)。他认为在一个类中有静态变量是一种反模式。
我的问题是应该使用什么最佳实践?
oop - 静态成员不使类本身成为(全局)对象吗?
每次我遇到单例模式或任何静态类(即具有(几乎)只有静态成员的类)的实现时,我想知道这是否实际上不是一个 hack,因此严重滥用类和实例的原则只是为了设计单个对象,而不是设计类和创建单个实例。对我来说,看起来类的静态成员通常会尝试向类添加一些他们实际上不应该拥有的特性,而是让它们自己反对。
但是这样实现单个对象真的很可取吗?还是您对事物的看法完全不同,并且认为此类静态类或单例与实际对象没有任何共同之处?