C# 4.0을 사용하고 있습니다. 각 매개 변수가 고유하므로 (과부하 지옥을 피할 수있는 방법은 무엇입니까?) 많은 비슷한 방법을 쓰는 문제를 피하려면 어떻게해야합니까?C# 4.0을 사용하여 과부하 피하기
감사
이 대신C# 4.0을 사용하고 있습니다. 각 매개 변수가 고유하므로 (과부하 지옥을 피할 수있는 방법은 무엇입니까?) 많은 비슷한 방법을 쓰는 문제를 피하려면 어떻게해야합니까?C# 4.0을 사용하여 과부하 피하기
감사
이 대신: 당신은 당신이 원하는 모든 PARAMS 하나 개의 방법이 있고, 다음과 같이 명명 된 PARAMS를 사용하여 호출 할 수 있습니다
void Method(string param1, string param2) { }
void Method(string param1, string param2, string param3) { }
void Method(string param1, string param2, string param3, string param4) { }
void Method(string param1, string param2, string param3, int int4) { }
//etc...
:
void Method(string param1, string param2 = "default2",
string param3 = "default3", int int4 = 12, int lastParam = 12) { }
다음과 같이 호출하십시오.
Method(param1: "myString", int4: 23);
//or...
Method(param1: "myString", param4: "string2", int4: 23);
설정하려는 것을 포함 시키면 나머지는 메소드 서명에서 지정한 기본값이됩니다.
아래에 설명 된 Employee 클래스에는 3 개의 생성자가 있다고 가정합니다.
public class Employee
{
public string FirstName { get; set; }
public string LastName { get; set; }
public string Qualification { get; set; }
public string MiddleName { get; set; }
public Employee(string firstName, string lastName)
{
FirstName= firstName;
LastName= lastName;
Qualification= "N/A";
MiddleName= string.Empty;
}
public Employee(string firstName, string lastName, string qualification)
{
FirstName= firstName;
LastName= lastName;
Qualification= qualification;
MiddleName= string.Empty;
}
public Employee(string firstName, string lastName, string qualification,
string middleName)
{
FirstName= firstName;
LastName= lastName;
Qualification= qualification;
MiddleName= middleName
}
}
C# 4.0에서는 다음과 같이 단일 생성자를 만들어야 모든 3 개의 생성자가 대체됩니다.
public class Employee
{
public string FirstName { get; set; }
public string LastName { get; set; }
public string Qualification { get; set; }
public string MiddleName { get; set; }
public Employee(string firstName, string lastName,
string qualification = "N/A", string middleName = "")
{
FirstName= firstName;
LastName= lastName;
Qualification= qualification;
MiddleName = middleName;
}
}
이 생성자
는 C#을 4.0Employee emp = new Employee("Adil", "Mughal");
Employee emp = new Employee("Adil", "Mughal", middleName: "Ahmed");
Employee emp = new Employee("Adil", qualification:"BS");
Employee emp = new Employee("ABC", lastName: "EFG", qualification: "BS");
Employee emp = new Employee("XYZ", middleName: "MNO");
C# 3의 속성 초기화로 이미 이와 비슷한 작업을 수행 할 수 있으므로 생성자와 반대되는 메서드를 사용하면이 문제를보다 효과적으로 표시 할 수 있습니다. –
첫 번째 버전에서는 더 적은 인수를 가진 생성자에 기본 생성자 값. 두 번째 옵션이 더 좋으므로 쓸데없는 점이지만 일요일에 nit를 선택하는 것입니다. –
C# 3에서는 매개 변수 컬렉션 개체를 받아들이도록 메서드를 다시 작성하는 것이 좋습니다. 닉 발언처럼, 당신은 편리하게 속성 이니셜 라이저를 사용하여 그 객체를 초기화 할 수 있습니다. 하지만 C# 4.0에서는 메서드에서 직접 선택적 인수를 사용하는 것이 훨씬 더 합리적인 것처럼 보입니다. – Joren
.. 다음과 같은 방식으로 호출 할 수 있습니다, 당신은 선택적 매개 변수를 사용할 수 있습니다.
나는 구문이 중괄호가없는 것 같아요. –
@Martinho - Woops가 동시에 자바 스크립트 객체 질문에 대답하고있었습니다 :) fixed –
메소드가 모든 매개 변수를 사용하고 일부만 전달하려고하면 어떻게됩니까? – dotnetdev