구조체 및 함수를 작성하여 참조로 구조체를 전달하려고합니다. 즉 구조체 값을 함수 내부에서 수정할 수 있습니다..NET에서 함수 매개 변수로 포인터를 사용하거나 "ref"키워드를 사용하는 것 사이에는 어떤 차이가 있습니까?
enum RoomType { Economy, Buisness, Executive, Deluxe };
struct HotelRoom
{
public int Number;
public bool Taken;
public RoomType Category;
public void Print()
{
String status = Taken ? "Occupied" : "available";
Console.WriteLine("Room {0} is of {1} class and is currently {2}",
Number, Category, status);
}
}
이제이 구조체를 참조로 전달하기 위해 두 가지 방법을 발견했습니다.
//Using Pointer
private unsafe static void Reserve(HotelRoom* room)
{
if (room->Taken)
Console.WriteLine("Cannot reserve room {0}", room->Number);
else
room->Taken = true;
}
//Using ref keyword.
private static void Reserve(ref HotelRoom room)
{
if (room.Taken)
Console.WriteLine("Cannot reserve room {0}", room.Number);
else
room.Taken = true;
}
어떤 차이가 있습니까? 일반적으로 언제 포인터를 사용해야합니까? 그리고 언제 ref 키워드를 사용해야합니까? 엄지 손가락의
변경 가능한 구조는 악합니다.클래스와 일반 매개 변수를 사용해야합니다. – SLaks
포인터가있는'unsafe' 키워드의 필요성은 당신의 질문에 대해 무엇을 말합니까? – Oded
C++ 용어로 생각하는 것 같습니다. 하지마. C#은 C++이 아닙니다. – SLaks