একটি তারিখ / সময় ডেটা টাইপের প্রকৃতির কারণে এটিতে কোনও nullমান থাকতে পারে না , অর্থাত এটির একটি মান থাকা দরকার, এটি খালি হতে পারে না বা কিছুই থাকতে পারে না। যদি আপনি কোনও তারিখ / সময় পরিবর্তনশীল হিসাবে চিহ্নিত করেন nullableতবে কেবলমাত্র আপনি এটিতে একটি নাল মান নির্ধারণ করতে পারেন। সুতরাং আপনি যা করতে যাচ্ছেন তা দুটি জিনিসের মধ্যে একটি (আরও কিছু থাকতে পারে তবে আমি কেবল দুটি বিষয়েই ভাবতে পারি):
আপনার ভেরিয়েবলের ন্যূনতম তারিখ / সময় মান নির্ধারণ করুন যদি আপনার কাছে এর মান না থাকে। আপনি সর্বাধিক তারিখ / সময় মানও নির্ধারণ করতে পারেন - যে কোনও উপায়ে আপনার পক্ষে উপযুক্ত। আপনার তারিখ / সময়ের মানগুলি পরীক্ষা করার সময় কেবল নিশ্চিত হয়ে নিন যে আপনি স্থির সাইট-ওয়াইড রয়েছেন। ব্যবহারের সিদ্ধান্ত নিন minঅথবা maxএবং লাঠি এটা দিয়ে।
আপনার তারিখ / সময় পরিবর্তনশীল হিসাবে চিহ্নিত করুন nullable। আপনি nullযদি তার সাথে কোনও ভেরিয়েবল না রাখেন তবে আপনি আপনার তারিখ / সময় পরিবর্তনশীল সেট করতে পারেন।
আমার উদাহরণটি ব্যবহার করে আমার প্রথম পয়েন্টটি প্রদর্শন করুন। DateTimeপরিবর্তনশীল টাইপ নাল সেট করা যাবে না, এটা এই ক্ষেত্রে, একটি মান প্রয়োজন আমি এটি সেট করতে যাচ্ছি DateTimeযদি কোনো মান এর সর্বনিম্ন মান।
আমার দৃশ্যটি আমার BlogPostক্লাস আছে have এটির অনেকগুলি পৃথক ক্ষেত্র / বৈশিষ্ট্য রয়েছে তবে আমি উদাহরণ হিসাবে কেবল দুটি ব্যবহার করতে পছন্দ করেছি। DatePublishedপোস্টটি যখন ওয়েবসাইটে প্রকাশিত হয়েছিল এবং একটি তারিখ / সময় মান থাকতে হয়। DateModifiedযখন কোনও পোস্ট সংশোধন করা হয়, সুতরাং এতে কোনও মান থাকতে হবে না, তবে মান থাকতে পারে।
public class BlogPost : Entity
{
public DateTime DateModified { get; set; }
public DateTime DatePublished { get; set; }
}
ADO.NETডাটাবেস থেকে ডেটা পেতে ব্যবহার করে (নির্ধারণের DateTime.MinValueকোনও মূল্য নেই):
BlogPost blogPost = new BlogPost();
blogPost.DateModified = sqlDataReader.IsDBNull(0) ? DateTime.MinValue : sqlDataReader.GetFieldValue<DateTime>(0);
blogPost.DatePublished = sqlDataReader.GetFieldValue<DateTime>(1);
DateModifiedক্ষেত্রটি হিসাবে চিহ্নিত করে আপনি আমার দ্বিতীয় বিষয়টি সম্পাদন করতে পারেন nullable। এখন আপনি এটি সেট করতে পারেন nullযদি এর কোনও মূল্য না থাকে:
public DateTime? DateModified { get; set; }
ADO.NETডাটাবেস থেকে ডেটা পেতে ব্যবহার করে, এটি উপরে যেভাবে করা হয়েছিল তার চেয়ে কিছুটা ভিন্ন দেখাচ্ছে ( nullপরিবর্তে বরাদ্দ দেওয়া DateTime.MinValue):
BlogPost blogPost = new BlogPost();
blogPost.DateModified = sqlDataReader.IsDBNull(0) ? (DateTime?)null : sqlDataReader.GetFieldValue<DateTime>(0);
blogPost.DatePublished = sqlDataReader.GetFieldValue<DateTime>(1);
আমি আশা করি এটি কোনও বিভ্রান্তি দূর করতে সহায়তা করে। প্রদত্ত যে আমার প্রতিক্রিয়া প্রায় 8 বছর পরে আপনি সম্ভবত একজন বিশেষজ্ঞ সি # প্রোগ্রামার হবেন :)