C#使用null或替代模式匹配

你好,我在C#中有以下课程:

public struct Entry<T> : IEntry
{
    public string name;
    public int bitlength;
    public T Value;

    public object Getvalue()
    {
        return Value;
    }

    public void Setvalue(BitArray bitArray,int offset)
    {
        int i = bitlength;
        int count = 0;
        ulong number = 0;
        Value = default;
        while(i > 0)
        {
            switch(typeof(T).Name)
            {
                case "Bool":
                    if (offset < bitArray.Count)
                        Value = (T)(object)bitArray[offset];
                    else
                        Value = (T)(object)false;
                    break;
                case "U":
                    if (offset + count < bitArray.Count)
                    {
                        if (bitArray[offset + count])
                        {
                            number |= 1ul << count;
                        }
                        if(i == 1)
                        {
                            Value = (T)(object)number;
                        }
                    }
                    else
                    {
                        Value = (T)(object)number;
                        break;
                    }
                    break;
                default:
                    throw new ApplicationException("Not supported type: " + Value.GetType().AssemblyQualifiedName);
            }
            count++;
            i--;
        }
    }
}

这里的问题是我需要一个类,该类支持从位流中获取数据,并将该位转换为只有两个位,字符串,带有接口的自定义对象等对象,例如bool,uint,uint32或uint。我更喜欢模式匹配,因为它会在单个情况下匹配所有int类型,但因为字符串或对象的默认值将为null而null不会与字符串大小写匹配,所以这是不可能的。 是否可以使用模式匹配来解决此问题,或者有一种简单的解决方案来解决此问题而无需使用模式匹配?

sonnysong 回答:C#使用null或替代模式匹配

暂时没有好的解决方案,如果你有好的解决方案,请发邮件至:iooj@foxmail.com
本文链接:https://www.f2er.com/3164898.html

大家都在问