0

以下に示すようなクラスがあると考えてください

public class Hotel
{
    public List<Room> lstRooms;
    public List<Room> objLstRoom = new List<Room>();
}

このホテルクラスのオブジェクトを作成すると、

  • そのオブジェクトのこれら2つの変数の違いは何でしょうか?
  • リストは最初は空なので、何が保存されていたでしょうか。
4

9 に答える 9

3

最初のものはnullです。2つ目はそうではありません。

于 2013-01-25T11:43:44.177 に答える
2

メンバーに何も割り当てない場合、デフォルト値が割り当てられるため、次のように記述します。

public class Hotel
{
    public List<Room> lstRooms = default(List<Room>);
    public List<Room> objLstRoom = new List<Room>();
}

参照型の場合、デフォルトnull。であるため、最初の変数はになりnullます。

他のリストについては、あなたが言ったように、それは初期化されますが、空のままになります。

于 2013-01-25T11:44:11.283 に答える
2

lstRoomsは空のリストですnullobjLstRoomアクセスlstRoomsすると、null参照例外が発生します。

于 2013-01-25T11:44:24.930 に答える
2
  • List<Room> lstRoomsnullとなるだろう
  • List<Room> objLstRoom = new List<Room>()空のリストになります

したがって、最初のホテルは部屋が0のホテルになり、2番目のホテルは部屋が定義されていないホテルになります。

でインスタンスメソッドを呼び出すnull Listと、クラッシュが発生します。

int count = lstRooms.Count; // crash because lstRooms is null

しかし

int count = objLstRoom.Count; // => 0

では、何が良いのでしょうか?私はいつも空のリストを好みます。

これは最悪だから:

if(hotelInstance.objLstRoom != null)
{
  foreach(va room in hotelInstance.objLstRoom)
    /* .... */
}

これの方が良い

foreach(va room in hotelInstance.objLstRoom)
    /* .... */
于 2013-01-25T11:45:08.817 に答える
1

lstRoomsnullにobjLstRoomなり、空List<Room>になり、要素はありません。

これは、たとえば、lstRooms.Add(new Room())null参照例外をスローし、正常に機能することを意味しますobjLstRoom.Add(new Room)

于 2013-01-25T11:44:20.377 に答える
1

あなたのコードは以下と同等です:

public class Hotel
{
    public List<Room> lstRooms;
    public List<Room> objLstRoom;

    public Hotel()
    {
        objLstRoom = null;  // Default initialization in .NET
        objLstRoom = new List<Room>()
    }
}
于 2013-01-25T11:44:20.847 に答える
0

What would be the difference between these two variables in that object?

lstRoomなりますnull、にobjLstRoomなりますempty list

Since list would be empty initially, what would have been stored in it?

どちらもlstRoom、またはobjLstRoom何も保存されません。

于 2013-01-25T11:44:42.797 に答える
0
public class Hotel
{
    public List<Room> lstRooms; // null
    public List<Room> objLstRoom = new List<Room>(); // empty list
}

あなたの質問に答えるには:

  1. そのオブジェクトのこれら2つの変数の違いは何でしょうか?

    lstRoomsはnullになり、objLstRoomは空のリストになります。

  2. リストは最初は空なので、何が保存されていたでしょうか。

    何も保存されていません。

于 2013-01-25T11:45:11.997 に答える
0

私はいつもそれを箱として考えようとしました。

public List<Room> lstRooms;空のボックスもそうです。部屋のオブジェクトのリストを収めるのに十分なスペースがありますが、実際にはリストは含まれていません。(まだ)

public List<Room> objLstRoom = new List<Room>();すでにルームリストが入っているボックスです。コンストラクターが呼び出されますが、これはかなり大きな違いです。

最初の例では、リストへの参照を作成しています。ポインタのようですが、2番目の例では実際にリストを作成しています。

lstRooms.Add(new Room());新しい部屋を追加するオブジェクトが存在しないために、割り当てられていない変数エラーが発生するようなものを呼び出そうとすると。一方、objLstRoom.Add(new Room()); うまく動作します。

于 2013-01-25T11:59:13.797 に答える