string stringName {get; set;} vs stringName stringName {get;组;}

时间:2017-12-13 04:47:03

标签: c# .net

我刚开始学习C#,我看到了类似的东西:

public class Name
{
  string FirstName {get; set;}
}

VS

public class Name
{
  FirstName FirstName {get; set;}
}

有人可以解释两者之间的区别吗?何时使用一个与另一个?

2 个答案:

答案 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将是用户定义的类型(可能是classstruct)。

答案 1 :(得分:1)

我尽可能简单地给你答案。这里FirstName FirstName {get; set;} 你有

FirstName // type identifier
FirstName // identifier
{get; set;} // access modifier

由于FirstName位于"类型标识符"是一种类型。您的问题可以归结为," stringFirstName"之间有什么区别?

嗯,我们都知道名为System.String的类型,很快就会string。它由Microsoft提供。但是FirstName呢?它的完整命名空间是什么?有点像要求stringint之间的差异。它们都来自object,但其他一切都不同。

现在,完全有可能成为一个类

class FirstName
{
    FirstName FirstName {get; set;} 
}

在这种情况下,您有一个包含属性FirstName的类FirstName,它将返回(如果已设置)类型为FirstName的对象,该对象与类定义的对象类型相同FirstName,其中包含属性FirstName,依此类推。