相关疑难解决方法(0)

简单的数字模式,将组合存储为唯一总和

这是一个数学问题,但我确信这必须出现在一些编程场景中,至少我希望如此,我想知道是否有这种情况的名称:

假设我有一个系列中的7个项目.为了这个例子,让我们使用一周中的几天.我希望用户提交他们计划在下一周进入的一周中的哪几天.它们带有一系列标准复选框,每周一个.

我想将它们在一个数据库字段中选择的日期存储为单个整数.

显然,我可以为每天分配一个数字,1 - 7(如果用户未选中所有选项,则保留0).但是如果一个用户选择星期一和星期二(1 + 2)而另一个用户选择星期三(3),那么我会遇到问题.

我还可以给一周中的每一天都有一些奇怪的独特之处,这样任何数字组合都不可能与任何其他组合相同.

我的希望是,不是为第二个场景组成这样一个系列,而是已经存在一些数字属性(可能是系列中每个数字的平方等),这些属性已经得到充分利用和尊重.理想情况下,这对编程来说非常熟悉,导出各个数字只需要很少的通用编程语言开销(在我的例子中是PHP).

我只是梦想这个,还是做这样的事情?

database math unique combinatorics

2
推荐指数
2
解决办法
1233
查看次数

如何检查枚举标志是否与另一个枚举一起出现?

我有以下枚举:

[Flags]
public enum Permissions
{
    None = 0x0000,
    All = 0xFFFF
}
Run Code Online (Sandbox Code Playgroud)

如果引发None或All,则不应引发其他标志.
如何检查无或全部是否被引发而没有其他内容?

.net c# enums flags

2
推荐指数
1
解决办法
363
查看次数

测试多个标志值

我有这个标志枚举:

public enum AssignmentType
{
    None = 0,
    Attendant = 1,
    ConductorCBS = 2,
    ReaderCBS = 4,
    Chairman = 8,
    Mike = 16,
    PlatformAttendant = 32,
    Prayer = 64,
    OCLM = 128,
    Sound = 256,
    Student = 512,
    Custom = 1024,
    Demonstration = 2048,
    Assistant = 4096
}
Run Code Online (Sandbox Code Playgroud)

我现在想测试我的变量是否有特定的标志条件。

我想确定我的变量只是以下各项的任意组合

  • None
  • Student
  • Assistant
  • Demonstration

因此,如果它具有任何其他枚举值,则该变量将无法满足测试要求。

首先,我从这里开始:

bool bIsPersonnel = true;

if (_Assignments == AssignmentType.None ||
    _Assignments == AssignmentType.Demonstration || 
    _Assignments == AssignmentType.Student ||
    _Assignments == AssignmentType.Assistant ||
    _Assignments …
Run Code Online (Sandbox Code Playgroud)

c# enum-flags

2
推荐指数
1
解决办法
102
查看次数

声明按位枚举(标志) - 最近的c#语法为"DWORD风格"的怪癖?

背景:按位枚举对于"更易读"的比较和检查非常有用:即OpenFile(write | append).

我已经看到了几种在C#中声明按位枚举的方法,但是最近其中一种常见模式似乎不再返回唯一值,我想知道我是在宣告它是错还是有些东西已经改变了.我在谈论"DWORD"(十六进制?)样式(如下所示),在VS2012 RC中枚举时,值为1,2,3,4 ...而不是预期的逐位加倍.

其他人可以重现这个吗?我发布了用于验证的代码以及控制台输出; ComparisonsDword正如您可以通过"标记枚举,带有DWORD的显式值"的输出所看到的那样发生奇怪的行为.

没有标志,正常的枚举

/// <summary>
/// How to compare filter values; no underlying type declared, not flag
/// </summary>
public enum ComparisonsNotInt {
    [Description("x")]
    None
    ,
    [Description("!=")]
    NotEqual
    ,
    [Description("=")]
    Equal
    ,
    [Description(">")]
    GreaterThan
    ,
    [Description("<")]
    LessThan
    ,
    /// <summary>
    /// Combination of <see cref="Equal"/> and <see cref="LessThan"/>
    /// </summary>
    [Description("<=")]
    LessThanOrEqual = (Equal | LessThan)
    ,
    /// <summary>
    /// Combination of <see cref="Equal"/> and <see cref="GreaterThan"/>
    /// </summary>
    [Description(">=")]
    GreaterThanOrEqual …
Run Code Online (Sandbox Code Playgroud)

c# syntax enums flags

1
推荐指数
1
解决办法
1103
查看次数

枚举上的逻辑运算符

给出一个包含4个元素的枚举

enum fontType {bold,italic,underlined,struck}
Run Code Online (Sandbox Code Playgroud)

此枚举类型的两个变量名为enum1和enum2,分配如下

fontType enum1=fontType.bold | fontType.italic;
fontType enum2=fontType.underlined & fontType.struck;
Run Code Online (Sandbox Code Playgroud)

为什么输出上的enum1 ='italic'和enum2 ='underlined'?

c# enums

1
推荐指数
1
解决办法
1287
查看次数

一个变量,多个值?

这可能听起来像一个奇怪的问题,我觉得简短的回答是'不'.

但是,基于布尔运算符,变量是否可以采用多个值?例如:

//Current implementation
string Variable1 = "A";
string Variable2 = "B";
string Variable3 = "C";

//Sought after implementation
string Variable = "":
Variable = "A" || Variable = "B" || Variable = "C";
Run Code Online (Sandbox Code Playgroud)

这看起来不太可行,特别是因为布尔运算符不能应用于字符串类型,因为,嗯......它们不是布尔值.

.net c#

1
推荐指数
1
解决办法
209
查看次数

如何创建枚举标志的动态列表,然后传递给另一种方法

我有一个类似以下的场景,我有一个枚举,我得到了一些经过解析的文本,以创建一个枚举的列表,我想将其传递到ReportResults中,该列表将根据传递的标记来创建电子邮件。我没有访问以更改枚举或ReportResults方法,是否可以传递诸如resultFlags变量之类的内容?有没有一种方法可以使用Enum.TryParse创建要传递的单个项目?(在某些时候,序列化需要这样的东西)

    [Flags]
    public enum Result
    {
        None = 0,
        Warning = 2,
        Error = 4,
        Success = 8,
        Failure = 16
    }

    public void ProcessResultValues(string log)
    {
        var resultFlags = new List<Result>();

        /// Process log text, add Result flags to the resultFlags list

        ReportResults(resultFlags);
    }

    public void ReportResults(Result results)
    {
        /// Based on the flags, generate a text to describe if the process succeeded or failed and if there were any warnings or errors encountered during processing.
    }
Run Code Online (Sandbox Code Playgroud)

c# enums

1
推荐指数
1
解决办法
44
查看次数

如何检查数字是否是二进制和的结果?

我有这样的情况:

拿到 enum

enum MyType{
    None = 0,
    First = 1,
    Second = 2,
    Third = 4,
    //and so on 
}
Run Code Online (Sandbox Code Playgroud)

现在我不想检查给定的数字是否是二进制和的结果

int givenNumber = 3;
int result = 
//how to get that it's sum of 2 enums in this particular case would be (int)Type.First & (int)Type.Second == 3;
Run Code Online (Sandbox Code Playgroud)

希望我的问题足够清楚,有人可以帮助解决这个问题.

编辑

  1. 枚举值始终由2提供

  2. 我想写一个方法,应该检查给定的数字可以是一个不同的二元和例子:int givenNumber = 1; //1 , 3 ,5 and 7 will be the answer

  3. 真实生活样本:我在我的数据库中有承包商,每个承包商都可以生产者= 1,供应商= 2,服务= 4在db中我只能存储1个值int在这种情况下是最聪明的选择.当我将项目加载到我的服务组合框 - 承包商时,我想加载每一行,例如值为4或5或7(因为7 = 1 + 2 + 4,5 = …

c# enums

0
推荐指数
1
解决办法
175
查看次数

有人可以向我解释这行c#代码吗?

在我的c#windows商店应用程序中,我有以下代码行来检测是否按下了CTRL键.我从在线样本中获得了这个代码,它运行得很好.

var state = Window.Current.CoreWindow.GetKeyState(Windows.System.VirtualKey.Control);
if ((state & CoreVirtualKeyStates.Down) == CoreVirtualKeyStates.Down)
{
    // do something with e.Key
}
Run Code Online (Sandbox Code Playgroud)

具体来说,我以前从未见过if语句中的语法.

+用于添加整数或串联字符串,而&&用于组合2个布尔表达式,那么在这个上下文中做什么做什么?

c# boolean-logic

0
推荐指数
1
解决办法
138
查看次数

Enum作为标志的问题

我有以下内容enum:

[Flags]
public enum Status { Nominal, Modified, DirOneOnly, DirTwoOnly, DirOneNewest, DirTwoNewest }
Run Code Online (Sandbox Code Playgroud)

我试图看看该Modified位是否已设置为true并尝试了以下方法:

if(_stateFlags.HasFlag(Status.Modified))
{
    //DoStuff
}   //Found out why this doesn't work after reading docs.
Run Code Online (Sandbox Code Playgroud)

if((_stateFlags & Status.Modified) == Status.Modified)
{
    //DoStuff
}
Run Code Online (Sandbox Code Playgroud)

后者是我进一步研究使我相信会起作用的方法.但是,当我这样做时_stateFlags = Status.DirTwoOnly,上述陈述仍然似乎在评估true哪个让我感到困惑.

我做了一些根本错误的事吗?

c# enums bitwise-operators

0
推荐指数
2
解决办法
810
查看次数

这是什么"|" (管道)是指C#?

在Security Cryptography X509Certificates的上下文中,我在其中一个项目代码中遇到了这个问题.

X509Store store = new X509Store("MY", StoreLocation.CurrentUser);
store.Open(OpenFlags.OpenExistingOnly | OpenFlags.ReadWrite);
Run Code Online (Sandbox Code Playgroud)

这是什么"|" 管意味着什么?

.net c# x509certificate2

-2
推荐指数
1
解决办法
72
查看次数