相关疑难解决方法(0)

枚举的字符串表示形式

我有以下枚举:

public enum AuthenticationMethod
{
    FORMS = 1,
    WINDOWSAUTHENTICATION = 2,
    SINGLESIGNON = 3
}
Run Code Online (Sandbox Code Playgroud)

然而问题是,当我要求AuthenticationMethod.FORMS而不是id 1时,我需要"FORMS"这个词.

我找到了以下解决此问题的方法(链接):

首先,我需要创建一个名为"StringValue"的自定义属性:

public class StringValue : System.Attribute
{
    private readonly string _value;

    public StringValue(string value)
    {
        _value = value;
    }

    public string Value
    {
        get { return _value; }
    }

}
Run Code Online (Sandbox Code Playgroud)

然后我可以将此属性添加到我的枚举器:

public enum AuthenticationMethod
{
    [StringValue("FORMS")]
    FORMS = 1,
    [StringValue("WINDOWS")]
    WINDOWSAUTHENTICATION = 2,
    [StringValue("SSO")]
    SINGLESIGNON = 3
}
Run Code Online (Sandbox Code Playgroud)

当然我需要一些东西来检索StringValue:

public static class StringEnum
{
    public static string GetStringValue(Enum value)
    { …
Run Code Online (Sandbox Code Playgroud)

c# enums

897
推荐指数
19
解决办法
75万
查看次数

没有null的语言的最佳解释

当程序员抱怨空错误/异常时,有人经常会问我们做什么而没有null.

我对选项类型的酷感有一些基本的想法,但我没有最好的表达它的知识或语言技巧.对于普通程序员可以接近的方式写的以下内容有什么好的解释,我们可以指出那个人?

  • 默认情况下,引用/指针的不可取性是可以为空的
  • 选项类型的工作原理包括简化检查空案例的策略
    • 模式匹配和
    • monadic理解
  • 替代解决方案,如消息吃零
  • (我错过了其他方面)

null programming-languages functional-programming nullpointerexception non-nullable

223
推荐指数
7
解决办法
4万
查看次数

null的目的是什么?

我在编译器类中,我们的任务是从头开始创建自己的语言.目前我们的困境是是否包含'null'类型.null提供了什么目的?我们的一些团队认为这不是绝对必要的,而其他人则只是因为它可以提供额外的灵活性.

你有什么想法,尤其是支持或反对null吗?您是否曾创建过需要null的功能?

language-agnostic compiler-construction null language-design

38
推荐指数
10
解决办法
4834
查看次数

为什么我不应该总是在C#中使用可空类型

自从这个概念在.net 2.0中引入以来,我一直在寻找一些很好的指导.

为什么我要在c#中使用不可为空的数据类型?(一个更好的问题是为什么我不能默认选择可空类型,只有在明确有意义时才使用非可空类型.)

在其非可空对等体上选择可空数据类型是否会产生"重大"性能影响?

我更喜欢检查我的值而不是Guid.empty,string.empty,DateTime.MinValue,<= 0等,并且通常使用可空类型.而且我不经常选择可空类型的唯一原因是我脑后的痒感使我觉得它不仅仅是向后兼容性而是强迫额外的'?' 要明确允许空值的字符.

是否有人总是(最常见的)选择可空类型而不是非可空类型?

谢谢你的时间,

c# null nullable c#-2.0

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

为什么.NET中存在null?

为什么.NET中的值为null?这是否优于保证所有内容都具有值并且没有任何调用为空?

任何人都知道这些方法的名称是什么?

无论哪种方式,我对此都知之甚少,但是在简单性方面,即在消除空检查方面,并且能够编写更加简化的算法而不必分支出来检查.

在性能,简洁性,平行性,面向未来等方面,每种风格的优缺点是什么?

.net c# clr performance type-systems

35
推荐指数
5
解决办法
2668
查看次数