gpt4 book ai didi

c# - 是否可以设计一个 C# 类,在通过反射查询时将其自身标记为正 IsValueType 和正 IsClass?

转载 作者:太空狗 更新时间:2023-10-29 17:52:07 27 4
gpt4 key购买 nike

是否可以设计一个 C# 类,在通过反射查询时将其自身标记为正 IsValueType 和正 IsClass?

或者它们实际上是相互排斥的标记?

我知道,

大多数原始类型将返回(包括枚举和结构):
IsValueType=true,IsClass=false。

字符串或任何类 - 也是抽象..返回:
IsValueType=false,IsClass=true。

接口(interface)返回:
IsValueType=false, IsClass=false

最佳答案

Is it possible to design a C# class that when querying it through reflections will mark itself as positive IsValueType and positive IsClass?

让我们来看看这些实现:

protected virtual bool IsValueTypeImpl()
{
return this.IsSubclassOf((Type) RuntimeType.ValueType);
}

public bool IsClass
{
[__DynamicallyInvokable] get
{
if ((this.GetAttributeFlagsImpl() & TypeAttributes.ClassSemanticsMask) == TypeAttributes.NotPublic)
return !this.IsValueType;
else
return false;
}
}

如您所见,IsValueTypeImpl()(由 IsValueType 属性调用)依赖于继承IsClass 取决于 IsValueType (!).

接下来,this description of ValueType指出不可能直接从 ValueType 继承

所以,答案是,您不能同时创建IsClassIsValueType 的类型

关于c# - 是否可以设计一个 C# 类,在通过反射查询时将其自身标记为正 IsValueType 和正 IsClass?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16164639/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com