c# - 在没有引用的情况下构造对象?

标签 c# reference

我几乎可以肯定这违背了 C# 的基本法则,但是是否可以通过引用构造项目的“数组”或“集合”?

如果做不到这一点,是否有任何其他方法可以在带参数的静态方法中构造复选框?

希望我的伪代码有意义(关于Construct2的一切)

CheckBox cb = null, cb2 = null;

Main()
{
    Construct(ref cb);//works
    Construct2(new []{ref cb, ref cb2});//isnt going to work!
}

static void Construct(ref CheckBox cb){
    cb = new CheckBox();//works
}

static void Construct2(CheckBox[] cbs) { //
    cbs[0] = new CheckBox();
    cbs[1] = new CheckBox();
    //for (int i = 0; i < cbs.Length;i++){
    //    cbs[i] = new CheckBox();
    //}
}

最佳答案

你不能像那样传递一个 ref 变量数组。如果您希望能够像那样构造“成”多个变量,我认为您需要传入某种类型的 setter :

void Construct2 (params Action<Checkbox>[] cbas)
{
    foreach (var cba in cbas) cba(new Checkbox());
}

Construct2(
    (c) => cb = c,
    (c) => cb2 = c);

关于c# - 在没有引用的情况下构造对象?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12300282/

相关文章:

c# - 将 WinForms 表单嵌入到 Inno Setup 向导中

c# - 独立开发人员 (.NET) 的最佳持续集成设置

c# - .NET 客户端中 Google 表格中的条件格式请求

vba - 如何使用间接引用在vba中选择单个单元格或范围

C# CLR 存储过程不会部署到 SQL Server 2005

c# - 使用 groupby sum 和 min 进行 EF Linq to Entities 查询

c++ - 如何通过对构造函数的引用传递对象

c++ - 在 C++ 中通过引用传递数组

c++ - 绑定(bind)到函数参数的引用会延长该临时对象的生命周期吗?

c++ - Stroustrup 如何对临时对象进行非常量引用?