2017-11-23 11 views
0

메서드에 여러 매개 변수 보내기?C#의 메서드에 여러 매개 변수 보내기?

저는 C#과 Visual Studio에 대해 매우 익숙합니다. 저는 "배우면서"학습하고 질문합니다. 작은 Windows Form 응용 프로그램을 작성하고 있습니다.

다른 양식 값을 보내려고합니다. 사용하여 내를 Form1에 따라서

class Cars 
{ 
    public string Name { get; private set; } 
    public string Color { get; private set; } 

    public Cars(string name, string color) 
    { 
     this.Name = name; 
     this.Color = color; 
    } 
} 

내가 이러한 개체에 액세스 할 수 있습니다 :

나는이 클래스에서 개체의 목록을

List<Cars> cars = new List<Cars>(); 

자동차의이 목록은 다른 방법에로드 .

이제는 다른 양식 (양식 편집)을 차로 보내려고합니다. 나는이 일을하고 싶습니다 :

var form2 = new frmEdit(cars[0]); 

하지만 컴파일러는 내가 공개 ... 나쁜 OOP에 내 수업을 설정할 필요가에 대한 불평. 그러면 다음과 같이 할 수 있습니다.

var form2 = new frmEdit(cars[0].Name,cars[0].Color); 

Fine! 하지만 이것이 Javascript 나 PHP와 같은 다른 언어라면 객체를 보냈을 것입니다. 그래서 C#에서 "Anonymus Types"에 대해 읽었습니다. 그래서 좋은 해결책이 될 수 있다고 생각했습니다.

하지만 receiveing ​​양식 나던 ... 그것에 대해 알고 그래서 난 이런 식으로 사용하는 경우는 불평 :

car.Name; 

그래서 내가 여기서 무엇을해야합니까? 나는 적어도 "좋은"OOP를 사용하려고 노력하고 있으므로 Cars 클래스를 공개하는 나쁜 해결책이라고 생각한다. 편집 양식은 Cars 클래스에 대해 알 필요가 없습니다.

조언 해 주셔서 감사합니다.

[편집] 편집 양식 생성자 : 다음

private Cars myCar; // add this var. 

public frmEdit(Cars car) 
{ 
    this.myCar = car; // now you have your car stored if you need 
    textName.Text = car.Name; 
    textColor.Text = car.Color; 
} 

그리고 :

public frmEdit(string name, string color) 
{ 
textName.Text = name; 
textColor.Text = color; 
} 
+0

당신은 당신의 frmEdit 생성자를 추가 할 수 있습니까? –

+0

'동적'을 보낼 수 있습니다. 하지만 정적 유형 검사를 거부하는 이유는 무엇입니까? 그 좋은 OOP에 대해 어디서 읽었습니까? –

+2

왜 자동차를 내부에 넣지 않습니까? – Stuart

답변

1

가 당신의 frmEdit 변경

var form2 = new frmEdit(cars[0]);