using System;
namespace somens
{
class GettingTypeName
{
static void MethodUsingVar()
{
var someInt = 0;
Console.WriteLine("someInt is a : {0}", someInt.GetType().FullName);
Console.WriteLine("someInt is a : {0}", someInt.GetType().Name); //Why .Name?
}
static void Main(string[] args)
{
MethodUsingVar();
Console.ReadLine();
}
}
}
//Output
//someInt is a : System.Int32;
//someInt is a : Int32;
我理解someInt.GetType().FullName
的用法,因为它“获取类型的完全限定名称”,(引自Microsoft)。
但我不知道为什么someInt.GetType().Name
会给Int32.
返回的Name
类的Type
属性获取当前成员的名称。 “(来自同一个Microsoft页面的另一个引用https://msdn.microsoft.com/en-us/library/system.type(v=vs.110).aspx)
由于它用于特定类型的成员名称,代码如何输出正确的类型名称(没有名称空间)?它没有意义。
由于
答案 0 :(得分:3)
返回的Type类的名称属性" 获取当前成员的名称。"
这就是它所说的,因为它是MemberInfo.Name
的一般描述。这没有错,但并不完全清楚。类型System.Int32
是mscorlib
主要模块的成员。您通常不会将其视为成员,但它确实意味着它获得了该类型的名称。
答案 1 :(得分:3)
此处的“成员”不是您的变量 - 它是命名空间(或程序集或模块,如果您需要)的成员。 (遗憾的是文档是从MemberInfo
继承的 - 如果它说“类型名称”会更清楚。)
您正在处理Type
- 无论是拨打Type
还是使用GetType()
,您都会获得相同的typeof(int)
对象。类型是Int32
命名空间中的System
类型,因此其全名为System.Int32
,其名称为Int32
。 Type
对象的变量无知识。
答案 2 :(得分:-2)
.FullName - 返回对象类型的名称,包括命名空间和程序集描述
.Name - 仅返回对象的类型名称