面向云技术架构 - 痴者工良

  • 首页
  • 电子书
    • Istio 入门教程
    • kubernetes 教程
    • 从 C# 入门 Kafka
    • 多线程和异步
    • 动态编程-反射、特性、AOP
    • 表达式树
  • 文章导航
  • 隐私政策
愿有人陪你颠沛流离
遇到能让你付出的事物或者人,都是一种运气。
能遇到,就该珍惜。或许你们最终没能在一起,但你会切实地感受到力量。
正因为这样,那段相遇才变得有价值,才没有辜负这世间的每一段相遇。
  1. 首页
  2. .NET
  3. 正文

C# 判断泛型中参数是结构体是否为默认值的方法

2022年4月3日 1742点热度 2人点赞 0条评论
内容纲要

第一种:

    private bool IsDefaultValue(T value)
    {
        Span<byte> valueBytes = MemoryMarshal.AsBytes<T>(new T []{ value }.AsSpan());
        var defaultBytes = new byte[valueBytes.Length];
        return valueBytes.SequenceEqual(defaultBytes);
    }

第二种:

public class Test<T> where T : struct, IComparable
{
    public T Id { get; private set; }
    public Test(T id)
    {
        Id = id;
    }

    public bool IsDefault()
    {
        return Id.CompareTo(0) == 0;
    }
}

第三种:

public class Test<T> where T : struct, IComparable<T>
{
    private readonly static T defaultValue;
    static Test()
    {
        defaultValue = new T();
    }
    public T Id { get; private set; }
    public Test(T id)
    {
        Id = id;
    }

    public bool IsDefault()
    {
        return Id.CompareTo(defaultValue) == 0;
    }
本作品采用 知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议 进行许可
标签: c 判断 参数 泛型 默认值
最后更新:2022年4月3日

痴者工良

高级程序员劝退师

点赞
< 上一篇
下一篇 >

文章评论

razz evil exclaim smile redface biggrin eek confused idea lol mad twisted rolleyes wink cool arrow neutral cry mrgreen drooling persevering
取消回复

标签聚合
多线程 浅入 asp core kubernetes 入门 net c

COPYRIGHT © 2023 whuanle.cn. ALL RIGHTS RESERVED.

Theme Kratos Made By Seaton Jiang

粤ICP备18051778号

粤公网安备 44030902003257号