উত্তর:
সেরা অনুশীলন সবচেয়ে উপযুক্ত এক নির্বাচন করা হয়।
। নেট ফ্রেমওয়ার্ক 4.0 বিটা 2 তে স্ট্রিংগুলির জন্য একটি নতুন ইসনুলআরওয়াইটসাইট () পদ্ধতি রয়েছে যা ইসনুলআরএম্পটি () পদ্ধতিটিকে খালি স্ট্রিং ছাড়াও অন্যান্য সাদা স্থান অন্তর্ভুক্ত করতে সাধারণীকরণ করে।
"সাদা স্থান" শব্দটিতে স্ক্রিনে দৃশ্যমান নয় এমন সমস্ত অক্ষর অন্তর্ভুক্ত রয়েছে। উদাহরণস্বরূপ, স্পেস, লাইন ব্রেক, ট্যাব এবং খালি স্ট্রিং হ'ল স্পেস অক্ষর * ।
তথ্যসূত্র: এখানে
পারফরম্যান্সের জন্য, ইসনুলআরওহাইটস্পেস আদর্শ না হলেও ভাল। পদ্ধতি কলগুলির ফলে একটি ক্ষুদ্র পারফরম্যান্স জরিমানা হবে। আরও, ইসওয়াইটস্পেস পদ্ধতিতে নিজেই কিছু ইন্ডিয়ারেশন রয়েছে যা আপনি ইউনিকোড ডেটা ব্যবহার না করে থাকলে সরিয়ে ফেলা যায়। সর্বদা হিসাবে, অকালীন অপটিমাইজেশন খারাপ হতে পারে, তবে এটি মজাদারও।
তথ্যসূত্র: এখানে
উত্স কোডটি পরীক্ষা করুন (রেফারেন্স উত্স। নেট ফ্রেমওয়ার্ক 4.6.2)
[Pure]
public static bool IsNullOrEmpty(String value) {
return (value == null || value.Length == 0);
}
[Pure]
public static bool IsNullOrWhiteSpace(String value) {
if (value == null) return true;
for(int i = 0; i < value.Length; i++) {
if(!Char.IsWhiteSpace(value[i])) return false;
}
return true;
}
উদাহরণ
string nullString = null;
string emptyString = "";
string whitespaceString = " ";
string nonEmptyString = "abc123";
bool result;
result = String.IsNullOrEmpty(nullString); // true
result = String.IsNullOrEmpty(emptyString); // true
result = String.IsNullOrEmpty(whitespaceString); // false
result = String.IsNullOrEmpty(nonEmptyString); // false
result = String.IsNullOrWhiteSpace(nullString); // true
result = String.IsNullOrWhiteSpace(emptyString); // true
result = String.IsNullOrWhiteSpace(whitespaceString); // true
result = String.IsNullOrWhiteSpace(nonEmptyString); // false
return String.IsNullOrEmpty(value) || value.Trim().Length == 0;
যা নতুন স্ট্রিং বরাদ্দ এবং দুটি পৃথক চেক জড়িত। সম্ভবত সম্ভবত ইসনুলআরওয়েটস্পেসের অভ্যন্তরে স্ট্রিংয়ের প্রতিটি চরটি হোয়াইটস্পেস, তাই উচ্চতর পারফরম্যান্স যাচাই করে কোনও বরাদ্দ ছাড়াই সিঙ্গল পাসের মাধ্যমে এটি করা হয়। আসলে আপনি কি বিভ্রান্ত?
IsNullOrWhitespace()
খালি স্ট্রিংয়ের সাথে মেলে কিনা । মূলত IsNullOrEmpty()
একটি উপসেটের সাথে মেলে IsNullOrWhitespace()
।
অনুশীলনে পার্থক্য:
string testString = "";
Console.WriteLine(string.Format("IsNullOrEmpty : {0}", string.IsNullOrEmpty(testString)));
Console.WriteLine(string.Format("IsNullOrWhiteSpace : {0}", string.IsNullOrWhiteSpace(testString)));
Console.ReadKey();
Result :
IsNullOrEmpty : True
IsNullOrWhiteSpace : True
**************************************************************
string testString = " MDS ";
IsNullOrEmpty : False
IsNullOrWhiteSpace : False
**************************************************************
string testString = " ";
IsNullOrEmpty : False
IsNullOrWhiteSpace : True
**************************************************************
string testString = string.Empty;
IsNullOrEmpty : True
IsNullOrWhiteSpace : True
**************************************************************
string testString = null;
IsNullOrEmpty : True
IsNullOrWhiteSpace : True
তারা বিভিন্ন ফাংশন। আপনার পরিস্থিতি যা আপনার প্রয়োজন তা স্থির করে নেওয়া উচিত।
আমি এগুলির কোনওটি ব্যবহারকে একটি খারাপ অভ্যাস হিসাবে বিবেচনা করি না। বেশিরভাগ সময়ই IsNullOrEmpty()
যথেষ্ট। তবে আপনার পছন্দ আছে :)
Contains
। আপনি যদি নিশ্চিত করতে চান যে কেবল ব্যবহারকারীর নামটিতে কেবল ফাঁকা স্থান থাকতে পারে না - IsNullOrWhiteSpace
ঠিক আছে। IsNullOrEmpty
শুধুমাত্র নিশ্চিত করে যে কোনওরকম ব্যবহারকারীর নাম প্রবেশ করানো হয়েছিল।
উভয় পদ্ধতির আসল বাস্তবায়ন এখানেই রয়েছে (ডটপিক ব্যবহার করে সংক্রামিত)
[TargetedPatchingOptOut("Performance critical to inline across NGen image boundaries")]
public static bool IsNullOrEmpty(string value)
{
if (value != null)
return value.Length == 0;
else
return true;
}
/// <summary>
/// Indicates whether a specified string is null, empty, or consists only of white-space characters.
/// </summary>
///
/// <returns>
/// true if the <paramref name="value"/> parameter is null or <see cref="F:System.String.Empty"/>, or if <paramref name="value"/> consists exclusively of white-space characters.
/// </returns>
/// <param name="value">The string to test.</param>
public static bool IsNullOrWhiteSpace(string value)
{
if (value == null)
return true;
for (int index = 0; index < value.Length; ++index)
{
if (!char.IsWhiteSpace(value[index]))
return false;
}
return true;
}
IsNullOrWhiteSpace
সত্য string.Empty
! এটি একটি বোনাস :)
এটি বলে যে এটির IsNullOrEmpty()
মধ্যে সাদা ব্যবধান অন্তর্ভুক্ত নয় IsNullOrWhiteSpace()
!
IsNullOrEmpty()
যদি স্ট্রিংটি হয়:
-শক্তি
-শক্তি
IsNullOrWhiteSpace()
যদি স্ট্রিংটি থাকে:
-শক্তি
-শক্তি-
কেবলমাত্র শ্বেত স্থান অন্তর্ভুক্ত করে
ইসনুলআরএম্পটি এবং ইসনুলআরহাইটস্পেসের সাথে এটি পরীক্ষা করে দেখুন
string sTestes = "I like sweat peaches";
Stopwatch stopWatch = new Stopwatch();
stopWatch.Start();
for (int i = 0; i < 5000000; i++)
{
for (int z = 0; z < 500; z++)
{
var x = string.IsNullOrEmpty(sTestes);// OR string.IsNullOrWhiteSpace
}
}
stopWatch.Stop();
// Get the elapsed time as a TimeSpan value.
TimeSpan ts = stopWatch.Elapsed;
// Format and display the TimeSpan value.
string elapsedTime = String.Format("{0:00}:{1:00}:{2:00}.{3:00}",
ts.Hours, ts.Minutes, ts.Seconds,
ts.Milliseconds / 10);
Console.WriteLine("RunTime " + elapsedTime);
Console.ReadLine();
আপনি দেখতে পাবেন যে ইসনুলআরওহাইটস্পেসটি অনেক ধীর গতিতে: /
string.IsNullOrEmpty (str) - আপনি যদি স্ট্রিংয়ের মান সরবরাহ করতে চান তবে প্রদান করা হয়েছে
স্ট্রিং.আইসনলআরওহাইটস্পেস (স্ট্র) - মূলত এটি ইতিমধ্যে এক ধরণের ব্যবসায়িক লজিক বাস্তবায়ন (যেমন "" কেন খারাপ, তবে "~~" এর মতো কিছু ভাল)।
আমার পরামর্শ - ব্যবসায়িক যুক্তি প্রযুক্তিগত চেকগুলির সাথে মিশ্রিত করবেন না। সুতরাং, উদাহরণস্বরূপ, স্ট্রিং.আইএসএনউলআরম্পিটি তাদের ইনপুট পরামিতিগুলি পরীক্ষা করার জন্য পদ্ধতিগুলির শুরুতে ব্যবহার করা সবচেয়ে ভাল।
সমস্ত ধরার জন্য এটি কী ...
if (string.IsNullOrEmpty(x.Trim())
{
}
এটি সমস্ত স্থান ফাঁসিয়ে দিবে যদি তারা সেখানে ইসওয়াইটস্পেসের পারফরম্যান্স পেনাল্টি এড়িয়ে চলে, যা স্ট্রিংটি "শূন্য" শর্ত পূরণ করতে সক্ষম করে যদি এটি বাতিল হয় না।
আমি আরও মনে করি যে এটি পরিষ্কার এবং এটি সাধারণত ভাল অনুশীলন স্ট্রিংগুলি যেভাবেই ছাঁটাতে পারে বিশেষত যদি আপনি সেগুলি ডেটাবেস বা কোনও কিছুর মধ্যে রাখছেন।
নেট মান 2.0 তে:
string.IsNullOrEmpty()
: নির্দিষ্ট স্ট্রিং নাল বা খালি স্ট্রিং কিনা তা সূচিত করে।
Console.WriteLine(string.IsNullOrEmpty(null)); // True
Console.WriteLine(string.IsNullOrEmpty("")); // True
Console.WriteLine(string.IsNullOrEmpty(" ")); // False
Console.WriteLine(string.IsNullOrEmpty(" ")); // False
string.IsNullOrWhiteSpace()
: নির্দিষ্ট স্ট্রিং নাল, খালি, বা কেবল সাদা-স্পেস অক্ষর সমন্বিত কিনা তা সূচিত করে।
Console.WriteLine(string.IsNullOrWhiteSpace(null)); // True
Console.WriteLine(string.IsNullOrWhiteSpace("")); // True
Console.WriteLine(string.IsNullOrWhiteSpace(" ")); // True
Console.WriteLine(string.IsNullOrWhiteSpace(" ")); // True