当我在我的解决scheme中新build一个WCF服务时,我可以执行以下操作,有一个参数传入的构造函数? 如果是,运行时如何以及在何处填充我所需的IBusinessLogic对象? [ServiceContract] public interface IServiceContract { [OperationContract] … } public class MyService : IServiceContract { IBusinessLogic _businessLogic; public ServiceLayer(IBusinessLogic businessLogic) { _businessLogic = businessLogic; } … }
我如何创build一个私人的构造函数,应该只调用该类的静态函数而不是从其他地方?
如果我有这个class级: class A attr_accessor :b,:c,:d end 和这个代码: a = A.new h = {"b"=>10,"c"=>20,"d"=>30} 是否有可能直接从哈希值初始化对象,而不需要通过每对来调用instance_variable_set ? 就像是: a = A.new(h) 这应该导致每个实例variables被初始化为散列中具有相同名称的variables。
我刚进入一个新的公司,许多代码库使用初始化方法而不是构造函数。 struct MyFancyClass : theUberClass { MyFancyClass(); ~MyFancyClass(); resultType initMyFancyClass(fancyArgument arg1, classyArgument arg2, redundantArgument arg3=TODO); // several fancy methods… }; 他们告诉我,这与时间有关。 有些事情必须在施工之后完成, 在构造函数中失败。 但是大多数构造函数都是空的,我没有看到任何不使用构造函数的理由。 所以我转向你,哦向导的C + +:为什么你会用一个init方法,而不是一个构造函数?
我有一个最终的非静态成员: private final HashMap<String,String> myMap; 我想用构造函数调用的方法初始化它。 由于myMap是final的,我的“helper”方法无法直接初始化。 当然我有select: 我可以直接在构造函数中实现myMap初始化代码。 MyConstructor (String someThingNecessary) { myMap = new HashMap<String,String>(); myMap.put("blah","blahblah"); // etc… // other initialization stuff unrelated to myMap } 我可以让我的帮助器方法构buildHashMap,将其返回给构造函数,然后让构造函数将对象分配给myMap。 MyConstructor (String someThingNecessary) { myMap = InitializeMyMap(someThingNecessary); // other initialization stuff unrelated to myMap } private HashMap<String,String> InitializeMyMap(String someThingNecessary) { HashMap<String,String> initializedMap = new HashMap<String,String>(); initializedMap.put("blah","blahblah"); […]
对象字面值 =用花括号包裹的名称值对。 构造函数 =用于使用关键字new创build多个实例的函数。 原型 =扩展一个文字。 这是我迄今为止所了解的内容。但是我研究得越多,我就越感到困惑,他们每个人的意义何在。 我在代码中使用了构造函数,原型和文字几次,但是每次使用它们,我都觉得我还没有意识到它的全部潜力。我现在想要成为一名开发人员,只能领先一步。希望在stackoverflow的人帮助我实现它 哪个是最好的编程方式( 对象文字与构造函数vs原型 ) 可以使用构造函数和原型的代码,只使用对象文字而不使用构造函数和原型。 匿名函数的意义是什么? 一个非常简单的例子表明他们的重要性也将做。我知道他们是什么,但我不知道他们可以做什么可能的魔法。
无法理解为什么JSLint会在下面的代码中使用this一点而感到惊讶: function testConstr (x) { 'use strict'; this.joker = "Whyyy sooo seriousss?"; this.x = x; } 对于这两个财产分配,JSLint说: 意想不到的'这'。 我如何纠正我的代码?
如果我在构造函数中写return语句呢? 这是标准符合吗? struct A { A() { return; } }; 上面的代码编译得很好,在ideone没有任何错误。 但是下面的代码不会: struct A { A() { return 100; } }; 它在ideone提供这个错误: 错误:从构造函数中返回一个值 我明白,从构造函数返回的值根本没有意义,因为它没有明确提到返回types,我们毕竟不能存储返回的值。 但是我很想知道: C ++标准中哪个语句允许第一个例子,但禁止第二个例子? 有没有明确的说法? 第一个例子中的返回types是void吗? 是否有任何隐式返回types?
比方说,我正在写一个PHP(> = 5.0)类,这是一个单身人士。 我读过的所有文档都说,使类构造器是私人的,所以类不能直接实例化。 所以如果我有这样的事情: class SillyDB { private function __construct() { } public static function getConnection() { } } 有没有什么情况下__construct()被调用,而不是如果我正在做一个 new SillyDB() 在课堂内部打电话? 为什么我允许从内部实例化SillyDB呢?
不支持,是否支持,但我必须做一些技巧? 例: class Foo { public Foo<T1,T2>(Func<T1,T2> f1,Func<T2,T1> f2) { … } } generics只用于构造函数,没有依赖于它们的字段/属性,我使用它(generics)来强制执行f1和f2的types关联。 备注 :我find了解决方法 – 静态方法创build,但无论如何,我很好奇,为什么我有直接的方法的问题。