C # 의 선택적 매개 변수를 사용하려면 어떻게 해야 합니까?

이 질문은, C #, &lt sup&gt Note: 때 한 번에 한 있느냐는 질문에 "아직 지원부에서는 선택적 매개 변수 (즉, c # 전에 4) .&lt /sup>;

39, 웹 프로그래밍 API 의 we& re 구축되므로 that& # 39 에서 생성된 클래스 C #. 클래스 (int, int b 는) '와' 는 메서드로부터 제포바 API 는 'like', '등의 메서드입니다 제포바 &amp a = b = 표시줄에는 foo &amp 쿼리하지 params),'.

선택적 매개 변수, 클래스 C #, # 39 에서 지원하는 데 필요한 isn& 있는 t 언어. # 39 의 what& 최고의 외곽진입?

질문에 대한 의견 (1)
해결책

C # 4.0 옵션임 매개변수입니다 작동합니까 아무도 놀라게 한 것은 다음과 같습니다.

public void SomeMethod(int a, int b = 0)
{
   //some code
}
  • Edit:* 알아 볼 수 있느냐는 질문에 "당시, c # 4.0 didn& # 39, t 존재합니다. 이 질문은 여전히 1 위를 지키고 있지만 구글 C #, # &quot 옵션임 arguments&quot. 그래서 생각해봤죠 - 기술입니까 목마르겠구나 이 대답을 했다. 죄송합니다.
해설 (8)

또 다른 옵션은 params 키워드를 사용하여

public void DoSomething(params object[] theObjects)
{
  foreach(object o in theObjects)
  {
    // Something with the Objects…
  }
}

같은 불렀으매.

DoSomething(this, that, theOther);
해설 (2)

아니, 차라리 C # 의 여러 형태의 일반적으로 사용하는 방법:

void GetFooBar(int a) { int defaultBValue;  GetFooBar(a, defaultBValue); }
void GetFooBar(int a, int b)
{
 // whatever here
}
  • UPDATE:* 위에서 언급한 C # 2.0 이 길을 통해 기본값과 못한 게 있었다. # 39 m, C # 4.0 이 프로젝트를 진행하고 있는 직접 사용하는 이제 I& 이제 汲摹窍妨绰 옵션임 매개변수입니다. 그냥 내 자신의 코드를 사용하여 예를 들어보겠습니다.
public EDIDocument ApplyEDIEnvelop(EDIVanInfo sender, 
                                   EDIVanInfo receiver, 
                                   EDIDocumentInfo info,
                                   EDIDocumentType type 
                                     = new EDIDocumentType(EDIDocTypes.X12_814),
                                   bool Production = false)
{
   // My code is here
}
해설 (2)

이 사이트에서:

http://www.tek-tips.com/viewthread.cfm? 키드 = 1500861&amp, 페이지 = 1

C # 에서 사용할 수 있는 [옵션임] 차지백 (VB 의 표시되어도 제대로 작동하지 않는 C # 에서). 가질 수 있도록 메서드입니다 다음과 같습니다.

using System.Runtime.InteropServices;
public void Foo(int a, int b, [Optional] int c)
{
  ...
}

래퍼, 우리는 우리의 apiu 탐지합니다 선택적 매개 변수 (파라메트린포 p. 이소티오날) 및 설정할 기본값입니다. 목표는 lesher 매개변수입니다 의존하지 않고, 옵션으로 클라우지스 &quot optional&quot 대한 것과 같습니다. 매개변수 이름 중.

해설 (4)

과부하가 방법을 사용할 수 있습니다.

&lt pre>; 제포바 () 제포바 (int a) 제포바 (int, int b 는) &lt /pre>;

내가 준 예는 이 방법에 따라 달려 서명, int b&quot 누락되었는지 "; 때문에 유일한 방법, int a&quot &quot 따라 동일한 서명입니다 했을 것 "이라고 말했다. 메서드입니다.

추상형데이터타입 누얼바이 사용할 수 있습니다.

&lt pre>; 제포바 (int? a, int? b) &lt /pre>;

확인 후 사용할 수 있습니다. 해스발루 있는지를 살펴보기 위해 매개변수입니다 설정되었습니다.

39, & # 39 약간만이라도 다른 옵션을 사용하려면 params&. 매개변수입니다.

&lt pre>; 제포바 (params 객체에는 [] args) &lt /pre>;

가고 싶었어 release. 매개변수입니다 하리다 유형을 만들 필요가 있는 경우 처리해야 하지만, 이미 웹 애플리케이션을 위한 이 같은 일이 있을 것 같아요.

해설 (0)

선택적 매개 변수 C # 4.0 걱정 없이 사용할 수 있습니다. 우리는 다음과 같은 경우 메서드입니다

int MyMetod(int param1, int param2, int param3=10, int param4=20){....}

메서드를 호출할 때 이렇게 매개변수입니다 생략할 수 있습니다.

int variab = MyMethod(param3:50; param1:10);

C # 4.0 은 라는 기능이 &quot, release. parameters&quot, 전날에약혼자에게 보유하면 전달하십시오 매개변수로 자신의 이름을 물론 어떤 매개변수입니다 운영까지도 주문하십시오 전달할 수 있습니다:)

해설 (0)

누구없어요 옵션임 세계

스케쳐내 런타임용으로 개발하십시오 기본 매개변수 값에 공급할 수 있도록 호출하십시오 반사 사용해야 합니다. 하지만 이 같은 제안을 아닌 다른 좋은 질문 호환됩니까 VB.NET.

using System;
using System.Runtime.InteropServices;
using System.Reflection;

namespace ConsoleApplication1
{
    class Class1
    {
        public static void sayHelloTo(
            [Optional,
            DefaultParameterValue("world")] string whom)
        {
            Console.WriteLine("Hello " + whom);
        }

        [STAThread]
        static void Main(string[] args)
        {
            MethodInfo mi = typeof(Class1).GetMethod("sayHelloTo");
            mi.Invoke(null, new Object[] { Missing.Value });
        }
    }
}
해설 (0)
      • 모든 매개변수입니다 쉽게 생략하십시오 수 있는 모든 장점을 취하고 있는 windows*용 포지셔닝하십시오 누얼바이 유형은상위 다음과 같습니다.
public void PrintValues(int? a = null, int? b = null, float? c = null, string s = "")
{
    if(a.HasValue)
        Console.Write(a);
    else
        Console.Write("-");

    if(b.HasValue)
        Console.Write(b);
    else
        Console.Write("-");

    if(c.HasValue)
        Console.Write(c);
    else
        Console.Write("-");

    if(string.IsNullOrEmpty(s)) // Different check for strings
        Console.Write(s);
    else
        Console.Write("-");
}

그들은 이미 누얼바이 문장열 추상형데이터타입 don& # 39 는 나타냅니다. 필요한 건 아니다.

이 방법을 후에는 다음 호출은 모든 유효함 :

PrintValues (1, 2, 2.2f);
PrintValues (1, c: 1.2f);
PrintValues(b:100);
PrintValues (c: 1.2f, s: "hello");
PrintValues();

매개 변수를 설정할 수 있는 자유를 이쪽요 메서드입니다 정의할 때 당신은 그냥 운영까지도 저들이요 로 명명 자세한 내용은 아래 링크를 release. 및 선택적 매개 변수:

Release. 및 옵션 인수만 (C # 프로그래밍 안내선) @ MSDN

해설 (0)

내가 스티븐바이어 동의한다. 그러나 이것은 쉽게 사용하기 위한 단 하나의 웹 서비스, 엔드유저의 사용하는 것보다, 여러 버전의 동일한 형태의 웹메트로트 메서드입니다. 이 상황에서 내가 생각하는 이상적인 누얼바이 유형은상위 옵션용 매개변수입니다.

public void Foo(int a, int b, int? c)
{
  if(c.HasValue)
  {
    // do something with a,b and c
  }
  else
  {
    // do something with a and b only
  }  
}
해설 (1)

선택적 매개 변수는 메소드에 대한. 필요한 경우 옵션임 인수만 클래스에 대한 진실이며당신이 다음과 같습니다.

  • flexlm*용 c # 4.0: 이 때문에 내가 솔루션을 사용하여 클래스의 옵션임 인수만 구성자를 포지셔닝하십시오 it& # 39 에 좀 더 쉽게 기억할 수 있는 방법, 그래서 어떤 완료되어도. # 39 의 here& 예:

클래스가 myClass { 공용 myClass (int myInt) = 1, 문자열 미스트링 = &quot, 이거 준활성: 내가 할 수 있는 기본 string") { 여기서도 뭔가를 필요한 경우 // } }

  • c # 사용하여 이전 버전의 c # 4.0: 콩지름에 구성자를 체인식으로 연결 (이 키워드를 사용하여), 여기서 간단해진다는 구성자를 constructor&quot, 마스터, &quot 이어질 수밖에 없다. 예:

클래스가 myClass { 공용 myClass () { 기본값입니다 구성자를 // }

공용 myClass (int myInt) . 이 (myInt), whatever&quot ";) { 여기서도 뭔가를 필요한 경우 // } 공용 myClass (구체화하십시오 미스트링) . 이 (0, 미스트링) { 여기서도 뭔가를 필요한 경우 // } 공용 myClass (int, 문자열 미스트링 myInt) { 여기서도 뭔가를 정의마스터 구성자를 필요한 경우 - 이것은 // } }

해설 (0)

이것은 C # 에서 언급한 것처럼 이 것이 일반적인 방법으로 처리됩니까 스티븐 오버로드할 메서드입니다. 여러 버전의 만들어 서로 다른 방법을 효과적으로 매개변수입니다 만드시겠습니까 옵션임 매개변수입니다. 일반적으로 더 적은 수의 매개 변수를 forms security. 형태는 모든 매개 변수를 설정할 수 있는 방법을 이용하여 호출에서 기본값과 메서드입니다.

해설 (0)

C # 4.0 이상이 사용하는 화면 또는 사용

 private void GetVal(string sName, int sRoll)
 {
   if (sRoll > 0)
   {
    // do some work
   }
 }

 private void GetVal(string sName)
 {
    GetVal("testing", 0);
 }
해설 (0)

방법을 오버로드할 수 있습니다. 한 가지 방법은 (int a) '과' 에는 1 개의 매개변수입니다 제포바 제포바 (int, int b 는) ',' 다른 모두 들어 매개변수입니다

해설 (0)

하지만 제가 좀 늦게 자, 이 질문의 답을 찾고 궁극적으로는 아직이라구요 또 다른 방법으로 이 깨달았습니다. 너희가운데 (옵션) 의 데이터 유형을 args 사용자의 웹 방법이 유형: 스미르노데. 이렇게 하면 옵션임 arg 생략되는 경우, 만약 null 로 설정할 수 있는 # 39 는 문자열 값이 arg 의 it& 호출하여 얻을 수 있습니다. 가치, 즉,

[WebMethod]
public string Foo(string arg1, XmlNode optarg2)
{
    string arg2 = "";
    if (optarg2 != null)
    {
        arg2 = optarg2.Value;
    }
    ... etc
}

39 는 what&, s 도 닷넷 (.net) 기반 홈 페이지에 대한 제대로 된 우리 섹스한거요 외곽진입 생성할지 ws 그래도말야 fs@snapa 인수 목록 (the handy 텍스트 입력 할 경우에도 손실됩니다 확인란 테스트하기 위해.

해설 (1)

대신, 왜안돼요 그냥 기본 매개변수입니다 chunghwa 사전 클래스용 &solarisdvd 크리스트링 통과했습니다. 즉 거의 동일한 형태로 구현 방식을 크리스트링스 작동합니까 (asp.net).

즉 리퀘스트리크리스트링 [&quot a";]

이렇게 하면 리프 클래스용 분리 공장에서 / 상용구 코드.

또한 체크아웃하려고 [웹 서비스와 함께 할 수 있습니다 ASP.NET] (http://msdn.microsoft.com/en-us/library/ms972326.aspx). 웹 api 를 통해 웹 서비스는 자동으로 생성하는 특성을 C # 클래스뿐만.

해설 (0)

혹시 누군가 콜백하는 통과를 위한 (또는 '위임') 를 하는 선택적 매개변수입니다, can do it this way.

  • 옵션임 콜백하는 parameter:*
public static bool IsOnlyOneElement(this IList lst, Action callbackOnTrue = (Action)((null)), Action callbackOnFalse = (Action)((null)))
{
    var isOnlyOne = lst.Count == 1;
    if (isOnlyOne && callbackOnTrue != null) callbackOnTrue();
    if (!isOnlyOne && callbackOnFalse != null) callbackOnFalse();
    return isOnlyOne;
}
해설 (0)

선택적 매개 변수는 것 외에는 아무것도 기본값 매계변수! 내가 제안하세요 you give 둘 다 기본 매개변수입니다. 제포바 (int, int a = b = 0 0) 가 없는 경우 모든 방법을 don& # 39, 과부하된 발생할 경우, t = 0, b = 0, 1 가치를 전달하는 경우 모든 값뿐만 don& # 39 전달하십시오 업그레이드하면 전달된 값을 0 과 1, 2 의 값을 a 와 b 를 전달하는 경우 배정됩니다 두 번째.

질문 답변을 기대한다.

해설 (0)

39 의 경우 aren& 기본값과 추가하는 방법, 사용 가능한 선택적 매개변수입니다 오티오나라테리버트 닷넷 (.net) 기반 클래스 - t 를 사용하는 것이 보기 = netframework-4.8 https://docs.microsoft.com/en-us/dotnet/api/system.runtime.interopservices.optionalattribute?

예) 의 코드는 아래와 같습니다.

namespace OptionalParameterWithOptionalAttribute
{
    class Program
    {
        static void Main(string[] args)
        {
            //Calling the helper method Hello only with required parameters
            Hello("Vardenis", "Pavardenis");
            //Calling the helper method Hello with required and optional parameters
            Hello("Vardenis", "Pavardenis", "Palanga");
        }
        public static void Hello(string firstName, string secondName, 
            [System.Runtime.InteropServices.OptionalAttribute] string  fromCity)
        {
            string result = firstName + " " + secondName;
            if (fromCity != null)
            {
                result += " from " + fromCity;
            }
            Console.WriteLine("Hello " + result);
        }

    }
}
해설 (0)

I have a 는 웹 서비스를 쓸 수 있는 7 매개변수입니다. 이를 통해 각 sql 문을 쿼리하지 선택적입니다 속성을 랩된 웹 서비스. 그래서 비 선택 params 내려와 두 해결하는 데는 mind. 둘 다 예쁜 케이블링의:

method1 (param1, 3, 4, 5, 6, 매개변수 param7 param2, 매개변수 매개변수 매개변수) method1 (, 4, 6, 매개변수 param5 param3 param2 param1, 매개변수) 방법 1 (,,, param2 param3 param1 param4 param5 param7). 시작 사진을 볼 수 있습니다. 이렇게 거짓한 자랑합니다. 너무 많은 있습니다.

하지만 지금 보다 간편하게 어색하게 보이는 노력해야 합니다. method1 (param1, 부울 useParam1, param2, 부울 useParam2, etc.)

39 의 that& 방법 중 하나는 모든 것이 필요하며, 각 경우, 값을 호출하십시오 매개변수입니다 처리할 수 있는 것이 특징이다. How to use it, s 도 선택해제합니다 it& # 39 에서 인터페이스입니다.

S # 39, 해킹, 하지만 it& 작동합니다.

해설 (1)

난 이미 이를 6b.넷 의 웹 2.0 서비스. 내가 무슨 말을 로 변환한 후 됐지 specifying 매개 변수를 문자열로 필요하다. 선택적 매개변수입니다 지정되었습니다 비어 있는 구체화하십시오. 하지만 아닌 깨끗한 솔루션이므로 했다. 조심해요 있는 예외를 잡을 수 있는 모든 발생할 수 있습니다.

해설 (0)