Questions tagged «initializer»

1
C ++中的静态构造函数?我需要初始化私有静态对象
我想要一个带有私有静态数据成员(包含所有字符az的向量)的类。在Java或C#中,我可以创建一个“静态构造函数”,该构造函数将在创建该类的任何实例之前运行,并设置该类的静态数据成员。它只运行一次(因为变量是只读的,只需要设置一次),并且由于它是类的函数,因此可以访问其私有成员。我可以在构造函数中添加代码,以检查向量是否已初始化,如果尚未初始化,则将其初始化,但这会引入许多必要的检查,而且似乎不是解决问题的最佳方法。 我想到,由于变量将是只读的,因此它们只能是公共静态const,因此我可以在类外设置它们一次,但是再一次,这看起来像是一个丑陋的hack。 如果我不想在实例构造函数中初始化私有静态数据成员,是否可以在类中拥有私有静态数据成员?

5
为什么C#3.0对象初始化程序构造函数的括号是可选的?
似乎C#3.0对象初始化程序语法允许在存在无参数构造函数的情况下在构造函数中排除括号的打开/关闭对。例: var x = new XTypeName { PropA = value, PropB = value }; 相对于: var x = new XTypeName() { PropA = value, PropB = value }; 我很好奇为什么构造函数打开/关闭括号对在此之后是可选的XTypeName?

8
调用不带名称的Java方法
我在看下面的代码,发现有些奇怪: public class Sequence { Sequence() { System.out.print("c "); } { System.out.print("y "); } public static void main(String[] args) { new Sequence().go(); } void go() { System.out.print("g "); } static { System.out.print("x "); } } 我期望这样做会导致编译错误,因为System.out带有“ y”的不仅仅属于方法声明{ }。为什么这样有效?我不知道如何或应该调用此代码。 运行它时x y c g,它还会产生,为什么static { }在序列构造函数之前调用get?
100 java  initializer 

2
由于“内部”保护级别,无法访问初始化程序
我有一些协议 登录策略 public protocol LoginStrategy { func login(_ viewController: UIViewController) func getUserInfo(withCompletionHandler completionHandler: @escaping (_ userInfo: [String: Any]?) -> ()) func createLoginButton(_ frame: CGRect, withCompletionHandler completionHandler: @escaping (_ loginButton: UIView) -> ()) func getUserId() -> String } 和两个类: LoginProvider public class LoginProvider { public let strategy: LoginStrategy public func login(_ …

2
Kotlin中的静态初始化块
Kotlin中的静态初始化块等效于什么? 我了解Kotlin的设计宗旨是不带静电。我正在寻找具有相同语义的东西-首次加载该类时,代码将运行一次。 我的特定用例是,我想从Android AppCompat库启用DayNight功能,并且说明要求将一些代码放入Application类的静态初始化块中。



2
跳过变量初始化格式错误还是会导致不确定的行为?
考虑以下代码: void foo() { goto bar; int x = 0; bar: ; } GCC和Clang 拒绝了它,因为跳转到bar:绕过了变量初始化。MSVC一点也不抱怨(使用x after bar:会引起警告)。 我们可以使用来做类似的事情switch: void foo() { switch (0) { int x = 0; case 0: ; } } 现在所有三个编译器 发出错误。 这些代码片段格式不正确吗?还是引起UB? 我曾经以为两者都是不正确的形式,但是我找不到标准的启示部分。[stmt.goto]不说这事,而且也不[stmt.select] 。
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.