首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

C# - 从两个枚举中获取可能的对

在C#中,从两个枚举中获取可能的对,可以通过使用LINQ(Language Integrated Query)来实现。以下是一个示例:

代码语言:csharp
复制
using System;
using System.Collections.Generic;
using System.Linq;

public enum Enum1
{
    Value1,
    Value2,
    Value3
}

public enum Enum2
{
    Value4,
    Value5,
    Value6
}

public class EnumCombination
{
    public Enum1 Enum1Value { get; set; }
    public Enum2 Enum2Value { get; set; }
}

public class Program
{
    public static void Main()
    {
        var combinations = GetAllEnumCombinations();
        foreach (var combination in combinations)
        {
            Console.WriteLine($"{combination.Enum1Value} - {combination.Enum2Value}");
        }
    }

    public static List<EnumCombination> GetAllEnumCombinations()
    {
        var enum1Values = Enum.GetValues(typeof(Enum1)).Cast<Enum1>();
        var enum2Values = Enum.GetValues(typeof(Enum2)).Cast<Enum2>();

        var combinations = from enum1 in enum1Values
                            from enum2 in enum2Values
                            select new EnumCombination { Enum1Value = enum1, Enum2Value = enum2 };

        return combinations.ToList();
    }
}

在这个示例中,我们定义了两个枚举(Enum1和Enum2),以及一个表示枚举组合的类(EnumCombination)。我们使用LINQ的嵌套查询来生成所有可能的枚举组合,并将它们存储在一个List中。最后,我们遍历这个列表并输出每个组合。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

C#枚举器(译)

C#枚举器(译) 翻译文章,原文链接(已失效):http://www.ondotnet.com/pub/a/dotnet/2004/06/07/liberty.html 如果你正在创建一个表现和行为都类似于集合类...,允许类用户使用foreach语句集合成员进行枚举将会是很方便。...这在C# 2.0C# 1.1更容易实现一些。作为演示,我们先在 C# 1.1为一个简单集合添加枚举,然后我们修改这个范例,使用新C#2.0 枚举构建方法。...在这里为了程序简单就没有做数组下标越界检测。 感觉上看,ListBox像是一个集合,如果可以使用集合通常使用 foreach 循环来获取listBox所有字符串将会是非常便利。...C# 2.0 解救办法 使用C# 2.0 这些问题如同五月末雪般融化了。在这个例子2.0版本,我重写上面的列表,使用C# 2.0两个新特性:泛型 和 枚举器。

1.8K40

C# “智能枚举”:如何在枚举增加行为

C# ,您可以使用 enum 来表示观察者对象状态,并使用委托或事件来通知观察者对象。 智能枚举 什么是智能枚举?智能枚举不是官方一个称谓,而是作者定义一个名词。...它还重写了 Equals 和 GetHashCode 方法,以便可以比较两个枚举值是否相等。...该类核心方法是 GetEnumerations,它使用反射获取当前枚举类型所有字段,并将它们转换为枚举值。...通过继承这个抽象类,您可以轻松地实现自己枚举类型,并获得许多有用功能,例如通过名称和值获取枚举值,并支持比较操作。...智能枚举 = 枚举 + 丰富行为。 上述示例内容介绍了一个使用 C# 枚举类型实现信用卡类型示例。

21720

C#“智能枚举”:在枚举增加行为?

C# ,您可以使用 enum 来表示观察者对象状态,并使用委托或事件来通知观察者对象。 智能枚举 什么是智能枚举?智能枚举不是官方一个称谓,而是作者定义一个名词。...它还重写了 Equals 和 GetHashCode 方法,以便可以比较两个枚举值是否相等。...该类核心方法是 GetEnumerations,它使用反射获取当前枚举类型所有字段,并将它们转换为枚举值。...通过继承这个抽象类,您可以轻松地实现自己枚举类型,并获得许多有用功能,例如通过名称和值获取枚举值,并支持比较操作。...智能枚举 = 枚举 + 丰富行为。 上述示例内容介绍了一个使用 C# 枚举类型实现信用卡类型示例。

25620

【100个 Unity小知识点】 | C#通过 数字int值 获取 枚举Enum 数值

Unity 小知识点学习 C# 通过数字int值获取枚举Enum方法 枚举 是 值类型 ,数据直接存储在栈,而不是使用引用和真实数据隔离方式来存储。...默认情况下,枚举第一个变量被赋值为0,其他变量值按定义顺序来递增(0,1,2,3…) enum枚举类型变量名字不能相同,但是值可以相同 如果enum部分成员显式定义了值,而部分没有;那么没有定义值成员还是会按照上一个成员值来递增赋值...方式来获取枚举值: Debug.Log("state:" + SlamStateChange.NotInitialized);//state:NotInitialized...SlamStateChange.Lost);//state:Lost Debug.Log("state:" + SlamStateChange.Tracking);//state:Tracking 也可以使用int值方法来获取枚举值...Unity端拿到这个值之后,通过判断这个int类型数值来判断当前应用程序状态。。 所以这里就可以使用int值方法来获取枚举值来完成状态更新。

2.4K10

损坏手机获取数据

比如粉碎、射击手机或是直接扔进水里,但取证专家仍然可以找到手机里证据。 如何获取损坏了手机数据呢? ?...图1:在炮火中损坏手机 访问手机存储芯片 损坏手机可能无法开机,并且数据端口无法正常工作,因此,可以使用硬件和软件工具直接访问手机存储芯片。...要知道,在过去,专家们通常是将芯片轻轻地板上拔下来并将它们放入芯片读取器来实现数据获取,但是金属引脚很细。一旦损坏它们,则获取数据就会变得非常困难甚至失败。 ?...图2:数字取证专家通常可以使用JTAG方法损坏手机中提取数据 数据提取 几年前,专家发现,与其将芯片直接电路板上拉下来,不如像导线上剥去绝缘层一样,将它们放在车床上,磨掉板另一面,直到引脚暴露出来...比较结果表明,JTAG和Chip-off均提取了数据而没有其进行更改,但是某些软件工具比其他工具更擅长理解数据,尤其是那些来自社交媒体应用程序数据。

9.9K10

Redis可能不知道两个

今天在项目中看到了这两个类,至于这两个类是做什么,相信大家做开发应该不难猜到,其实就是通过这两个类来操作Redis,不知道大家有没有用过这两个类,其实老实说我之前真的没用过,倒是在用过程确实出现了很多问题...想必大家已经非常清楚,我们在项目中使用Redis肯定要通过一些类去操作从而设置或者获取一个值,操作这个类可能是你们公司自己封装工具类,但是也有公司没有封装工具类,是使用一些框架本身一些类去进行操作...,更多可能是Jedis,RedisTemplate和StringRedisTemplate这两个可能使用朋友比较少,也可能大家在使用了,只是我没用而已,但是不管怎么样,我们目的都是一样。...原来是序列化捣鬼,我们猜想是不是我们在存储键值时候RedisTemplate把我们值转换为了其他格式,怎么查看呢?...,其实确实是这样,当你去通过RedisTemplate取值时候,他会先把你key序列化为它数据格式,然后再去Redis中进行获取,将获取值再进行解析,就可以拿到我们想要值。

34010

C#Close()和Dispose()浅显理解

.net许多类都提供了Close()和Dispose()方法,一直以来我都以为它俩是一回事,是完全等价,在任何地方,用其一即可,这一意识源于《NET设计规范:约定、惯用法与模式》一书中,P239和...P240关于这俩方法设计建议。...按书中字面理解,Close就应该设计为与Dispose一样功能,是为了照顾自然语言一种考量,的确对于有些类,说Close比说Dispose更符合用户理解(如关闭连接、关闭流),所以这让我觉得Close...现在似乎可以理解为,Close不负责销毁对象,仅仅是根据类功能,实现业务上一个“关闭”,在本例,仅仅是改变了一下连接状态(连接→关闭);而Dispose,则一如它使命一样,销毁对象并释放资源。...Dispose会负责Close一切事务,额外还有销毁对象工作,即Dispose包含Close 2、当你有明确需求时候,不要混用二者 3、两者连在一起用没什么意义。

91420

duilib获取控件位置或者大小不对可能原因

duilib初学者可能总会有这样疑问:为什么我获取控件位置或者大小和我想象不一样?...位置不一样可能原因: 1.xml中直接配置位置和实际显示之后位置确实是不一样.xml设置位置(相对或绝对)都是基于他父控件左上角.而实际显示之后获取位置,是基于整个客户区左上角; 2....控件位置计算都是在WM_PAINT消息处理中进行,在这个消息处理之前,获取位置都是旧; 大小不一样可能原因: 1.参考上面第2条,大小计算也是在WM_PAINT消息处理中进行; 2.有其他你忽略干扰项....比如子控件采用相对布局时父控件有inset,或者父控件大小有限; 3.可能只是因为其他控件遮盖或者超出了父控件而不显示,看起来大小不对;

1.7K40

两个角度看 Typescript 类型是什么?

每个角度都从这三个问题来解释 以下三个问题对于理解类型是如何工作非常重要,需要从这两个角度每一个角度来回答。 myVariable 类型 MyType 意味着什么?...let source: SourceType = /*...*/; let target: TargetType = source; TypeUnion 是如何Type1、 Type2和 Type3...这种检查两种方法(大致)是: 在标准类型,如果两个静态类型具有相同标识(“名称”) ,则它们是相等。一种类型是另一种类型子类型,它们子类型关系是显式声明。...具有标准类型语言有 c++ 、 Java、 c# 、 Swift 和 Rust 在结构类型系统,如果两个静态类型具有相同结构(如果它们部分具有相同名称和相同类型) ,则它们是相等。...如果 U 包含 T 所有部分(可能还包括其他部分) ,并且 U 每个部分都包含 T 相应部分子类型,那么一种类型 U 就是另一种类型 T 子类型。

1.4K20

两个角度理解 TypeScript 类型是什么

本文中描述了两种有助于理解它们观点。 每个角度三个问题 以下三个问题对于理解类型如何工作非常重要,并且需要从两个角度分别回答。 myVariable 具有 MyType 类型是什么意思?...let source: SourceType = /*...*/; let target: TargetType = source; TypeUnion 是如何 Type1,Type2 和 Type3...大致有两种检查方法: 在名义类型系统两个静态类型如果具有相同标识(“名称”)则相等。如果明确声明了它们子类型关系,则一种类型是另一种类型子类型。...名义类型语言为 C ++、Java、C#、Swift 和 Rust。 在结构类型系统两个静态类型具有相同结构(如果它们具有相同名称和相同类型)则相等。...如果 U 具有 T 所有部分(可能还有其他),并且 U 每个部分具有 T 相应部分子类型,则类型 U 是另一种类型 T 子类型。

1.5K00

工作溯源反制有帮助两个小脚本

介绍两个小脚本,在溯源工作,使用频繁,根据客户需求来,我在项目上客户要求,不管啥IP,只要有攻击行为就开始溯源。...一下子工作量就上来了,每天都拿到大量IP,项目快结束时候,直接过来了全部IP。...一开始在虚拟机里使用大佬工具 https://github.com/Bywalks/TrackAttacker 来帮助我识别有备案,先查询有备案溯源,其实几率很小,但是也占有溯源里一部分 我也想不明白为什么会拿自己博客机子进行渗透攻击行为...这里直接设备上,把它payload脱下来,反打回去,你就会获得这个主机shell了 然后再到机子上进行溯源,就是简单上机溯源了。...如果IP很少的话,就最后一天导入GOBY,进行批量扫描,找到web服务,或者其他一些漏洞,你别不信,做安全机子上还有漏洞?还真有。

69330

利用Pythonset函数两个数组进行去重

有一个小需求:使用Python编写一个函数,两个列表arrayA和arrayB作为输入,将它们合并,删除重复元素,再去重列表进行排序,返回最终结果。...如果按照一步一步做可以简单写出如下Python代码: # Challenge: write a function merge_arrays(), that takes two lists of integers...arrayC)) arrayE = sorted(arrayD) return arrayE 我们可以对上述代码进行简化,直接先将arrayA+arrayB合并,然后使用set函数将合并后arrayA...+arrayB转换成集合,这样就取到去重效果,最后对对集合调用sorted函数进行排序返回即可。...("Tests failed") if __name__ == '__main__': test() 上述代码写了5个测试用例,分别对merge_arrays函数进行验证,在Pycharm执行结果如下

13710

python subprocess运行子进程实时获取输出

起因是这样,c++程序开发后 功能号和指令,校验需要人工去看对照二进制代码,量大还费力, 于是打算利用python 去调用 c++程序去校验指令, 首先要做就是用python 获取c++程序...printf() 或cout 输出; 环境linux python 3.8.x 以下代码实现,获取子程序输出 command='....linux shell指令,如果要用shell 指令如ls 要将false 变成true, 通过指定stderr=subprocess.STDOUT,将子程序标准错误输出重定向到了标准输出,以使我们可以直接标准输出同时获取标准输出和标准错误信息...p.poll() 返回子进程返回值,如果为None 表示 c++子进程还未结束. p.stdout.readline() c++标准输出里获取一行....参考文章1 pythonsubprocess.Popen()使用 参考文章 2 python subprocess运行子进程实时获取输出

10K10
领券