Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/user-interface/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/wpf/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 创建组合集时如何实现从对象到整数再到对象的转换_C# - Fatal编程技术网

C# 创建组合集时如何实现从对象到整数再到对象的转换

C# 创建组合集时如何实现从对象到整数再到对象的转换,c#,C#,我必须创建3种类型的组合集: 排列 部分置换 组合 这不是家庭作业。我靠养老金生活,我正努力保持忙碌。我或多或少地学习了C#,现在我正在努力学习最佳实践 过程如下: 输入是必须从中生成组合集的项目(对象)列表。对象的类型不重要,因为我只使用项目的数量(list.Count=n)。 我创建一个整数列表,从1到n 我还创建了一个字典,该字典定义了整数列表中的每个整数与对应对象之间的对应关系,该对象代表整数(字典中的键)。 整数列表作为参数发送给适当的方法(以及另一个整数k——在组合或部分置换的情况下

我必须创建3种类型的组合集:

  • 排列
  • 部分置换
  • 组合
  • 这不是家庭作业。我靠养老金生活,我正努力保持忙碌。我或多或少地学习了C#,现在我正在努力学习最佳实践

    过程如下:
    输入是必须从中生成组合集的项目(对象)列表。对象的类型不重要,因为我只使用项目的数量(
    list.Count=n
    )。
    我创建一个整数列表,从
    1
    n

    我还创建了一个字典,该字典定义了整数列表中的每个整数与对应对象之间的对应关系,该对象代表整数(字典中的键)。
    整数列表作为参数发送给适当的方法(以及另一个整数
    k
    ——在组合或部分置换的情况下,每个部分置换集或组合中的项数),以便创建所需类型的组合集。我已经有了这些方法。 该方法的输出是整数列表的列表。每个整数列表都是一个组合集。
    通过对应字典,这个整数列表被转换成一个对象列表,其中每个列表都是一个组合集,但现在不是整数列表,而是原始项列表。我根据所需的组合集类型,对每个特定的方法都这样做。 我想知道是否有更正确的方法来实现这一点:无论是哪种组合集,都必须执行从对象到整数再从整数到对象的转换

    为了解释,我将使用Wyck的示例:

    假设我必须生成3项(对象)的置换集:

    新列表(){objA,objB,objC}; 我创建了一个整数列表:newlist(){1,2,3}

    整数输出是:置换列表:{1,2,3},{1,3,2},{2,1,3},{2,3,1},{3,1,2},{3,2,1},{3,2,1}

    现在,我使用通信字典创建对象输出:

    1->objA

    2->objB

    3->objC

    因此,输出为:

    新列表(){objA,objB,objC},{objA,objC,objB},…,{objC,objB,objA}

    现在,下次我必须以2个为一组创建相同3个对象的组合。 相同的3个整数列表被传递给另一个方法,该方法创建一个整数列表列表,其中每个列表是3个整数的组合,每次取2个

    输出是:组合列表:{{1,2},{1,3},{2,3}

    现在我必须再次将这个整数列表转换成一个对象列表:

    新列表(){objA,objB},{objA,objC},{objB,objC}

    我不是要密码。相反,对于思考的方式和可能使用的模式(例如接口),但更重要的是,如何实现它(不是代码,而是解释,尽可能清楚详细地说明如何获得形成整数列表并将其传递给正确方法的初步步骤,以及以自动方式将整数列表转换为对象列表的最后步骤)。
    提前谢谢你。

    我终于解决了。
    我最初以以下方式设计解决方案:
    有一个主类通过其构造函数接收或从用户那里获取要生成组合集合的项目列表。
    对于每种组合集,都有一个类生成它们。
    此类:
    1.通过其构造函数接收要生成的n个项(类型为T的对象)的列表 组合集合的各自类型。
    2.创建从1到n的整数列表(项目列表中的项目数)。
    3.在中的每个整数之间填充字典对应字典 整数和对应项的列表(对象T)。
    4.使用列表中的整数生成组合集合列表 整数的数目。
    5.使用 通信字典,返回到主列表。
    经过一些思考,我得出结论,转换不必由相应的类执行,但可以在主类中完成: 1.创建从1到n的整数列表。 2.此整数列表将传递给适当的类以生成 (整数)组合集的各自类型。 3.然后使用整数列表创建项目列表 (对象)通过在主类中创建的对应字典

    此外,我注意到,大多数生成组合集的算法只使用传递给它们的项目列表(或数组)的索引,因此实际上根本不需要将对象转换为整数再转换回来。
    生成组合集的类可以是T类型的泛型类,并直接在其上执行组合集生成。
    有一个约束:
    某些算法(创建项目顺序相关的组合集的算法-置换和部分置换)必须能够比较两个项目。因此类型T必须实现接口IComparable。
    如果不是这样,可以使用转换为整数并返回到对象的解决方案。

    相反,可以准备相应对象的比较器并将其传递给相应的类。

    我必须说,要准确地了解您试图实现的目标有点困难,您能否提供您已经拥有的方法和一些伪代码?您是否做过任何研究?如果是,您是否可以提供您迄今为止尝试过的方法?哇