我刚开始学习C#,我看到了类似的东西:
public class Name
{
string FirstName {get; set;}
}
VS
public class Name
{
FirstName FirstName {get; set;}
}
有人可以解释两者之间的区别吗?何时使用一个与另一个?
答案 0 :(得分:6)
第一个声明属性类型为string
:
string FirstName {get; set;}
第二个声明该属性的类型为FirstName
:
FirstName FirstName {get; set;}
所以我想你的情况是这样的:
public class Name
{
public FirstName FirstName {get;set;}
public LastName LastName {get;set;}
}
public class FirstName
{
public string Name {get;set;}
}
public class LastName
{
public string Name {get;set;}
}
在C#中有两种数据类型: 1.内置 - 它们是语言的一部分。 2.用户定义 - 它们是您的代码的一部分,或您正在使用的库的代码。
String
(或者,使用其完全限定名称:System.String
)是语言本身的一部分。某些类型是.NET框架的一部分,出于所有意图和目的,您可以将它们视为与1相同。
其他类型在代码中定义,或者您使用的第三方库的代码。这些被认为是用户定义的类型。在您的情况下,FirstName
将是用户定义的类型(可能是class
或struct
)。
答案 1 :(得分:1)
我尽可能简单地给你答案。这里FirstName FirstName {get; set;}
你有
FirstName // type identifier
FirstName // identifier
{get; set;} // access modifier
由于FirstName
位于"类型标识符"是一种类型。您的问题可以归结为," string
和FirstName
"之间有什么区别?
嗯,我们都知道名为System.String
的类型,很快就会string
。它由Microsoft提供。但是FirstName
呢?它的完整命名空间是什么?有点像要求string
和int
之间的差异。它们都来自object
,但其他一切都不同。
现在,完全有可能成为一个类
class FirstName
{
FirstName FirstName {get; set;}
}
在这种情况下,您有一个包含属性FirstName
的类FirstName
,它将返回(如果已设置)类型为FirstName
的对象,该对象与类定义的对象类型相同FirstName
,其中包含属性FirstName
,依此类推。