2017-12-13 5 views
3

私はC#のを学び始め、私はこのような何かを見た:string stringName {get;セット;}対stringName stringName {get;セット;}

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

をVS

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

は、誰かが両者の違いを説明できますか?いつ他のものを使うか?

+7

「FirstName」という名前のクラス、構造体、列挙型、または代理人タイプがある場合、2番目のクラスは正当なものです。 –

答えて

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#には、2種類のdat aタイプ: 1. Inbuilt - それらは言語の一部です。 2.ユーザー定義 - コードの一部、または使用しているライブラリのコードです。

String(または、完全修飾名:System.String)は、言語自体の一部です。いくつかの型は.NETフレームワークの一部であり、すべての目的や目的のために、これらを1と同じものと見なすことができます。

その他の型は、使用するサードパーティライブラリのコードまたはコードで定義します。これらはユーザー定義型と見なされます。あなたのケースでは、FirstNameはユーザ定義タイプ(おそらくclassまたはstruct)になります。

+0

データ型(FirstName)が定義されているといいでしょうか? – kvk30

+0

@ kvk30どういう意味ですか? – john

+0

文字列は、inbuilt datatype.netまたは任意のプログラミング言語です。どんなプログラミング言語であれ、独自のデータ型を定義することができますか?同様に、この場合、彼は自身のデータ型名 'FirstName'を定義していました。何かが間違っている場合は、私を修正してください。 – kvk30

1

私はあなたにできるだけ簡単な答えを与えます。 「タイプ識別子」の位置にあるFirstNameがタイプですので、ここでFirstName FirstName {get; set;} あなたは

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

を持っています。あなたの質問は、 "とFirstNameの違いは何ですか?"

まあ、私たちはすべてSystem.Stringとすぐにstringと呼ばれるタイプを知っています。これはMicrosoftによって提供されます。しかし、FirstNameはどうですか?そのための完全な名前空間は何ですか?例えば、stringintの間の相違のようなもの。どちらも両方ともタイプがobjectに由来しますが、それ以外はすべて異なります。

あなたが(設定されている場合)を返しますプロパティFirstNameを含むクラスFirstNameを、持っている。この場合、この

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

として今、それはクラスのために完全に可能であるのであるタイプFirstNameのオブジェクト、クラスFirstNameで定義されているものと同じオブジェクトタイプで、プロパティーはFirstNameなどとなります。