.net 将NameOf与变量一起使用

.net 将NameOf与变量一起使用,.net,vb.net,nameof,.net,Vb.net,Nameof,为什么以下任何一项都不能编译: NameOf(value.GetType()) NameOf(GetType(value)) 此表达式没有名称 如何获取传递的值类型的字符串名称ToString()可能已重载,因此无法使用它。您可以使用value.GetType().Name以字符串形式获取类型的名称 您的代码无法编译,因为GetType()返回类型为System.type的对象,而不是表达式,这是必需的,根据。您可以使用value.GetType().Name以字符串形式获取类型名称 您的代码

为什么以下任何一项都不能编译:

NameOf(value.GetType())
NameOf(GetType(value))
此表达式没有名称


如何获取传递的值类型的字符串名称
ToString()
可能已重载,因此无法使用它。

您可以使用
value.GetType().Name
以字符串形式获取类型的名称


您的代码无法编译,因为
GetType()
返回类型为
System.type
的对象,而不是表达式,这是必需的,根据。

您可以使用
value.GetType().Name
以字符串形式获取类型名称


您的代码无法编译,因为
GetType()
返回类型为
System.type
的对象,而不是表达式,该表达式是必需的。VB.Net有一个名为的内置函数。您可以将对象直接传递给
TypeName
函数,而不是在获取类型名称之前获取对象类型:

VB.Net有一个名为的内置函数。您可以直接将对象传递给
TypeName
函数,而不是在获取类型名称之前获取对象类型:

在这种情况下,您不能使用
NameOf
,因为此新操作符从成员本身获取成员名称

GetType
不返回成员,而是返回类、结构、接口或枚举的类型元数据


因此,通过获取
type.name
属性值:
value.GetType().name

在这种情况下,不能使用
NameOf
,因为这个新操作符从成员本身获取成员的名称

GetType
不返回成员,而是返回类、结构、接口或枚举的类型元数据


因此,通过获取
type.name
属性值:
value.GetType().name

谢谢,您将能够获得整个类型名称。任何关于为什么
NameOf
在这里不起作用的线索,即使其参数显式命名为
typeOrMember
?根据,参数必须是表达式,而不是对象。根据MSDN推荐的解决方案是与NameOf结合使用。快速准确。非常感谢。@MatíasFidemraizer:我刚刚又看了一遍整件事,认为你是对的。@MatíasFidemraizer我更新了我的答案,在原来的帖子中解决了这两个问题(我想我之前是通过评论回复…),谢谢。任何关于为什么
NameOf
在这里不起作用的线索,即使其参数显式命名为
typeOrMember
?根据,参数必须是表达式,而不是对象。根据MSDN推荐的解决方案是与NameOf结合使用。快速准确。非常感谢。@MatíasFidemraizer:我刚刚又看了一遍整件事,认为你是对的。@MatíasFidemraizer我更新了我的答案,在原来的帖子中解决了这两个问题(我想我之前是通过评论回复…),这是一条很棒的信息。没有其他人建议这样做。我害怕
TypeName
在某些情况下没有用处。例如,对于整型数组的变量,返回的名称将是
“Integer()”
,或者如果变量是
null
,则
将返回“Nothing”
。这是一条很好的信息。没有其他人建议这样做。我害怕
TypeName
在某些情况下没有用处。例如,对于整型数组类型的变量,返回的名称将是
“Integer()”
,或者如果变量是
null
,则
将返回“Nothing”