출처 : http://msdn.microsoft.com/ko-kr/library/dd264739.aspx
CalculateBMI(123, 64);
CalculateBMI(weight: 123, height: 64);
CalculateBMI(height: 64, weight: 123);
CalculateBMI(123, height: 64);
//CalculateBMI(weight: 123, 64);
class NamedExample { static void Main(string[] args) { // The method can be called in the normal way, by using positional arguments. Console.WriteLine(CalculateBMI(123, 64)); // Named arguments can be supplied for the parameters in either order. Console.WriteLine(CalculateBMI(weight: 123, height: 64)); Console.WriteLine(CalculateBMI(height: 64, weight: 123)); // Positional arguments cannot follow named arguments. // The following statement causes a compiler error. //Console.WriteLine(CalculateBMI(weight: 123, 64)); // Named arguments can follow positional arguments. Console.WriteLine(CalculateBMI(123, height: 64)); } static int CalculateBMI(int weight, int height) { return (weight * 703) / (height * height); } }
상수 식입니다. 폼의 식 default(ValType), 어디 ValType 는 값 형식입니다.
public void ExampleMethod(int required, string optionalstr = "default string", int optionalint = 10)
//anExample.ExampleMethod(3, ,4);
anExample.ExampleMethod(3, optionalint: 4);
참고 |
---|
namespace OptionalNamespace { class OptionalExample { static void Main(string[] args) { // Instance anExample does not send an argument for the constructor's // optional parameter. ExampleClass anExample = new ExampleClass(); anExample.ExampleMethod(1, "One", 1); anExample.ExampleMethod(2, "Two"); anExample.ExampleMethod(3); // Instance anotherExample sends an argument for the constructor's // optional parameter. ExampleClass anotherExample = new ExampleClass("Provided name"); anotherExample.ExampleMethod(1, "One", 1); anotherExample.ExampleMethod(2, "Two"); anotherExample.ExampleMethod(3); // The following statements produce compiler errors. // An argument must be supplied for the first parameter, and it // must be an integer. //anExample.ExampleMethod("One", 1); //anExample.ExampleMethod(); // You cannot leave a gap in the provided arguments. //anExample.ExampleMethod(3, ,4); //anExample.ExampleMethod(3, 4); // You can use a named parameter to make the previous // statement work. anExample.ExampleMethod(3, optionalint: 4); } } class ExampleClass { private string _name; // Because the parameter for the constructor, name, has a default // value assigned to it, it is optional. public ExampleClass(string name = "Default name") { _name = name; } // The first parameter, required, has no default value assigned // to it. Therefore, it is not optional. Both optionalstr and // optionalint have default values assigned to them. They are optional. public void ExampleMethod(int required, string optionalstr = "default string", int optionalint = 10) { Console.WriteLine("{0}: {1}, {2}, and {3}.", _name, required, optionalstr, optionalint); } } // The output from this example is the following: // Default name: 1, One, and 1. // Default name: 2, Two, and 10. // Default name: 3, default string, and 10. // Provided name: 1, One, and 1. // Provided name: 2, Two, and 10. // Provided name: 3, default string, and 10. // Default name: 3, default string, and 4. }
// In C# 3.0 and earlier versions, you need to supply an argument for // every parameter. The following call specifies a value for the first // parameter, and sends a placeholder value for the other six. The // default values are used for those parameters. var excelApp = new Microsoft.Office.Interop.Excel.Application(); excelApp.Workbooks.Add(); excelApp.Visible = true; var myFormat = Microsoft.Office.Interop.Excel.XlRangeAutoFormat.xlRangeAutoFormatAccounting1; excelApp.get_Range("A1", "B4").AutoFormat(myFormat, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing);
// The following code shows the same call to AutoFormat in C# 4.0. Only // the argument for which you want to provide a specific value is listed. excelApp.Range["A1", "B4"].AutoFormat( Format: myFormat );
메서드, 인덱서 또는 생성자는 각 매개 변수가 모두 선택적인 경우이거나 각 매개 변수가 이름 또는 위치를 기준으로 호출문의 단일 인수와 대응되고 이 인수를 해당 매개 변수의 형식으로 변환할 수 있는 경우에 실행 후보가 됩니다. 둘 이상의 후보가 발견되면 기본 설정 변환에 대한 오버로드 확인 규칙은 명시적으로 지정된 인수에 적용됩니다. 선택적 매개 변수의 생략된 인수는 무시됩니다.두 후보 모두 동등한 것으로 평가될 경우에는 호출에서 인수가 생략된 선택적 매개 변수가 없는 후보를 실행합니다. 이는 오버로드 확인에서 매개 변수가 적은 후보를 우선시하는 일반적인 규칙이 적용되기 때문입니다.
'C#' 카테고리의 다른 글
[c#] delegate 델리게이트 파라미터 매개변수 선언 (0) | 2015.06.08 |
---|---|
[C#] Access DB 에 대한 32bit/64bit OLE DB Provider 관련 오류 excel import (2) | 2014.12.18 |
[C#] 엑셀 행열 전환 (Microsoft.Office.Interop.Excel Switch Row/Column) (0) | 2013.04.12 |
[C#]Create a Custom Image Button Control (0) | 2013.03.19 |
[C#] 인터넷 연결 확인 API (0) | 2013.03.05 |