Datetime обнулять пытанне

Я пасылаю DateTime да функцыі як:

<�Код> Моя_функция ((DateTime) MethodDateTime);

У той час як мой MethodDateTime мае DateTime тып дадзеных і ўтрымлівае Null значэнне.

З-за гэтага падчас выканання, ён дае мне памылку обнулять аб'ект павінен мець значэнне .

Мае функцыі заключаецца ў наступным:

MyFunction(DateTime abc)
{
   //Statements
}

Такім чынам, пасля серфінгу, што я магу зразумець, што я прымушаючы нуль у DateTime. Але гэта мая праблема, часам я атрымліваю нулявое значэнне ў якасці даты-часу, так як з гэтым змагацца?

Акрамя таго, калі я перадаю DATETIME непасрэдна ён кажа

  1. Лепшы перагружаны матч метад 'Big.Classes.QStr.MyFunction (System.DateTime)' мае некаторыя недапушчальныя аргументы
  2. не можа канвертаваць з 'System.DateTime? да 'System.DateTime'

So because of this i am doing (DateTime)MethodDateTime

Declaration and Initialization for my datetime is DateTime? MethodDateTime = null;

<�Моцны> EDIT:

Асноўная дэкларацыя я зрабіў гэта:

    /// 
/// Get's or set's the MethodDateTime. If no MethodDateTime is there, this /// attribute is null. ///
 
    DateTime? MethodDateTime
    {
        get;
        set;
    }
0
На самай справе я выкарыстоўваю гэта ўласцівасць, паколькі доўгі час кадавання. Не хачу, каб змяніць у адваротным выпадку, я вымушаны буду змяніць так шмат кодаў.
дададзена аўтар Django Anonymous, крыніца
На самай справе я выкарыстоўваю гэта ўласцівасць, паколькі доўгі час кадавання. Не хачу, каб змяніць у адваротным выпадку, я вымушаны буду змяніць так шмат кодаў.
дададзена аўтар Django Anonymous, крыніца
Чаму вы не змяніць подпіс метаду на атрыманне DateTime? ?
дададзена аўтар Steve, крыніца
Чаму вы не змяніць подпіс метаду на атрыманне DateTime? ?
дададзена аўтар Steve, крыніца

12 адказы

Можна проста змяніць сігнатуру метаду для атрымання обнулять DateTime

MyFunction(DateTime? abc)
{
    if(abc.HasValue)
    {
       //your previous code
    }
    else
    {
      //Handle the NULL case
    }
}

Тым не менш, калі вы сапраўды не хочаце змяніць свой папярэдні код, які вы маглі б проста дадаць яшчэ адзін метад з тым жа імем, але з абнуляецца DateTime

MyFunction(DateTime? abc)
{
     Console.WriteLine("NULLABLE version called");
}

MyFunction(DateTime abc)
{
     Console.WriteLine("NOT NULLABLE version called");
}

Такім чынам, аснова будзе правільны метад, гледзячы на ​​тыпе дадзеных пераменнага, перададзеных

2
дададзена
Добра гэта працуе для мяне :) Гоша, чаму гэта не прыйшло мне ў галаву. Цалкам дакладна ... гэта асноўнае, дзякуй мільён ....
дададзена аўтар Django Anonymous, крыніца

Можна проста змяніць сігнатуру метаду для атрымання обнулять DateTime

MyFunction(DateTime? abc)
{
    if(abc.HasValue)
    {
       //your previous code
    }
    else
    {
      //Handle the NULL case
    }
}

Тым не менш, калі вы сапраўды не хочаце змяніць свой папярэдні код, які вы маглі б проста дадаць яшчэ адзін метад з тым жа імем, але з абнуляецца DateTime

MyFunction(DateTime? abc)
{
     Console.WriteLine("NULLABLE version called");
}

MyFunction(DateTime abc)
{
     Console.WriteLine("NOT NULLABLE version called");
}

Такім чынам, аснова будзе правільны метад, гледзячы на ​​тыпе дадзеных пераменнага, перададзеных

2
дададзена
Добра гэта працуе для мяне :) Гоша, чаму гэта не прыйшло мне ў галаву. Цалкам дакладна ... гэта асноўнае, дзякуй мільён ....
дададзена аўтар Django Anonymous, крыніца

Вы павінны абвясьціць функцыю з параметрам тыпу DateTime? замест DateTime так што гэта обнулять .

MyFunction(DateTime? abc)
{
  //Statements
}

Гэта адзіны спосаб працы з DateTime , калі вам трэба апрацоўваць магчымыя нулявыя значэння. З обнулять тыпаў ў вас ёсць ўласцівасці HasValue (аддаюць перавагу для праверкі супраць Null ) і Значэнне , напрыклад:

MyFunction(DateTime? abc)
{
   if(abc.HasValue)
   {
     DateTime myDate = abc.Value;
   } else {
    //abc is null
   }
}
1
дададзена
Дзякуючы брату яго выдаліць памылку, дазвольце мне праверыць, калі праграма працуе нармальна. У любым выпадку яго добры ўрок для мяне. Вялікі дзякуй
дададзена аўтар Django Anonymous, крыніца

Вы павінны абвясьціць функцыю з параметрам тыпу DateTime? замест DateTime так што гэта обнулять .

MyFunction(DateTime? abc)
{
  //Statements
}

Гэта адзіны спосаб працы з DateTime , калі вам трэба апрацоўваць магчымыя нулявыя значэння. З обнулять тыпаў ў вас ёсць ўласцівасці HasValue (аддаюць перавагу для праверкі супраць Null ) і Значэнне , напрыклад:

MyFunction(DateTime? abc)
{
   if(abc.HasValue)
   {
     DateTime myDate = abc.Value;
   } else {
    //abc is null
   }
}
1
дададзена
Дзякуючы брату яго выдаліць памылку, дазвольце мне праверыць, калі праграма працуе нармальна. У любым выпадку яго добры ўрок для мяне. Вялікі дзякуй
дададзена аўтар Django Anonymous, крыніца

DateTime values cannot hold null. Nullable (which is the same thing as DateTime?) is essentially a wrapper class, that allows you to store a ValueType or a null value.

Вы альбо павінны праверыць свой DateTime? значэнне:

if(MethodDateTime == null)
    MyFunction(DateTime.MinValue) //Pass in a sentinal value

ці змяніць метад, які дазваляе nullables:

MyFunction(DateTime? abc)
{
    ....
0
дададзена

DateTime values cannot hold null. Nullable (which is the same thing as DateTime?) is essentially a wrapper class, that allows you to store a ValueType or a null value.

Вы альбо павінны праверыць свой DateTime? значэнне:

if(MethodDateTime == null)
    MyFunction(DateTime.MinValue) //Pass in a sentinal value

ці змяніць метад, які дазваляе nullables:

MyFunction(DateTime? abc)
{
    ....
0
дададзена

Калi я вас правiльна разумею, вы не хочаце, каб адправіць у DateTime як обнулять аб'ект MyFunction. Тады вы павінны спачатку праверыць, калі яна роўная нулю, а затым адправіць у кошту.

if(MethodDateTime.HasValue)
{
   MyFunction(MethodDateTime.Value);
}
else
{
  //handle this case somehow
}
0
дададзена

Калi я вас правiльна разумею, вы не хочаце, каб адправіць у DateTime як обнулять аб'ект MyFunction. Тады вы павінны спачатку праверыць, калі яна роўная нулю, а затым адправіць у кошту.

if(MethodDateTime.HasValue)
{
   MyFunction(MethodDateTime.Value);
}
else
{
  //handle this case somehow
}
0
дададзена
<�Р> "У той час як мой MethodDateTime мае DateTime тып дадзеных і змяшчае нулявое значэнне."

Nope, it is DateTime? and not DateTime, wich is short for System.Nullable The Error occurs when you cast it from DateTime? to DateTime and it has no value.

if( MethodDateTime.HasValue)
{
    MyFunction(MethodDateTime.Value);
}
else
{
    //Handle error
}
0
дададзена
<�Р> "У той час як мой MethodDateTime мае DateTime тып дадзеных і змяшчае нулявое значэнне."

Nope, it is DateTime? and not DateTime, wich is short for System.Nullable The Error occurs when you cast it from DateTime? to DateTime and it has no value.

if( MethodDateTime.HasValue)
{
    MyFunction(MethodDateTime.Value);
}
else
{
    //Handle error
}
0
дададзена

You can go with nullable datetime DateTime?

0
дададзена

You can go with nullable datetime DateTime?

0
дададзена