你好,我在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不会与字符串大小写匹配,所以这是不可能的。 是否可以使用模式匹配来解决此问题,或者有一种简单的解决方案来解决此问题而无需使用模式匹配?