C# 字符串stringName{get;set;}vs stringName stringName{get;set;}

C# 字符串stringName{get;set;}vs stringName stringName{get;set;},c#,.net,C#,.net,我刚开始学习C#,我看到了这样的情况: public class Name { string 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 c

我刚开始学习C#,我看到了这样的情况:

public class Name
{
  string 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;}
}
VS


有人能解释一下两者的区别吗?何时使用一个属性与另一个属性?

第一个属性声明属性类型为
string

string FirstName {get; set;}
第二个声明属性的类型为
FirstName

FirstName FirstName {get; set;}
所以我想你的场景是这样的:

public class Name
{
  string 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
)是语言本身的一部分。某些类型是.NETFramework的一部分,您可以从所有意图和目的考虑这些与1相同。


其他类型在代码或您使用的第三方库的代码中定义。这些被认为是用户定义的类型。在您的情况下,
FirstName
将是一个用户定义的类型(可能是
结构
)。

我给您尽可能简单的回答。这里
FirstName FirstName{get;set;}
你有

FirstName // type identifier
FirstName // identifier
{get; set;} // access modifier
因为“类型标识符”位置的
FirstName
是一个类型。你的问题可以归结为:“字符串和名字有什么区别?”

我们都知道叫做
System.String
的类型,简称
String
。它是由微软提供的。但是名呢?它的完整名称空间是什么?有点像询问
string
int
之间的差异。它们都是类型,都来自
对象
,但其他一切都不同

现在,对于这样一个类来说是完全可能的

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

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

第二个是合法的,如果你有一个名为
FirstName
的类、结构、枚举或委托类型。我们可以说它定义了数据类型(FirstName)?@kvk30什么意思?字符串是内置的datatype.net或任何编程语言。任何编程语言都可以让我们定义自己的数据类型,对吗?同样,在本例中,他定义了自己的数据类型名
FirstName
。如果有什么不对劲,请纠正我。你对哪一个说不?让我们来看看。