কীভাবে "0" এবং "1" কে মিথ্যা এবং সত্যে রূপান্তর করা যায়


90

আমার একটি পদ্ধতি রয়েছে যা Odbc এর মাধ্যমে একটি ডাটাবেসের সাথে সংযোগ স্থাপন করে। আমি যে সঞ্চিত পদ্ধতিটি কল করছি তার একটি রিটার্ন মান রয়েছে যা ডাটাবেসের দিক থেকে 'চর'। এই মুহুর্তে আমি সেই রিটার্ন মানটি স্ট্রিং হিসাবে ধরছি এবং সাধারণ স্টেটমেন্টে এটিকে ব্যবহার করছি। 0 এবং 1 ডাটাবেস থেকে কেবল যখন দুটি মান ফিরে আসতে পারে তখন এ জাতীয় স্ট্রিংটির তুলনা করার ধারণাটি আমি সত্যিই পছন্দ করি না।

OdbcCommand fetchCommand = new OdbcCommand(storedProc, conn);

fetchCommand.CommandType = CommandType.StoredProcedure;
fetchCommand.Parameters.AddWithValue("@column ", myCustomParameter);
fetchCommand.Parameters.Add("@myReturnValue", OdbcType.Char, 1)
            .Direction = ParameterDirection.Output;
fetchCommand.ExecuteNonQuery();

string returnValue = fetchCommand.Parameters["@myReturnValue"].Value.ToString();
if (returnValue == "1")
{
    return true;
} 

এই পরিস্থিতিটি পরিচালনা করার উপযুক্ত উপায় কী হবে What আমি 'কনভার্ট। টুবুলিয়ান' () চেষ্টা করেছি যা এটিকে সুস্পষ্ট উত্তরের মতো মনে হয়েছিল তবে আমি দৌড়ে গিয়েছিলাম 'স্ট্রিং একটি বৈধ বুলিয়ান হিসাবে স্বীকৃত ছিল না। 'ব্যতিক্রম নিক্ষেপ করা হচ্ছে। আমি কি এখানে কিছু মিস করছি, বা '1' এবং '0' কে সত্য এবং মিথ্যা হিসাবে কাজ করার অন্য কোনও উপায় আছে?

ধন্যবাদ!

উত্তর:


156

কেমন:

return (returnValue == "1");

বা নীচের পরামর্শ হিসাবে:

return (returnValue != "0");

সঠিকটি আপনি সাফল্যের ফলাফল হিসাবে যা খুঁজছেন তার উপর নির্ভর করবে।


9
সঠিক? চেক; সংক্ষিপ্ত? চেক; মার্জিত? চেক। +1
আর্লজ

11
আমি ব্যবহার করার সুপারিশ করব return (returnValue!="0")। এটি আরও প্রাকৃতিক 0হবে falseএবং প্রতিটি সংখ্যা যা শূন্য নয় true। অবশ্যই এখানে আমাদের ক্ষেত্রে রয়েছে যেখানে ক্রিস সংখ্যার পরিবর্তে স্ট্রিং ব্যবহার করে, সুতরাং এই মন্তব্যটি কেবল আংশিকভাবে বৈধ;)
গ্যাসেক

এটি সর্বদা বিতর্ক 0 এর অর্থ ERROR_SUCCESS যার অর্থ সবকিছু ঠিকঠাক হয়েছে। তবে আমি গ্যাসেকের সাথে একমত যে এটি আরও প্রাকৃতিক।
পিয়েরে-আলাইন ভিজিয়েন্ট

4
ভুলবেন না NULLs জন্য চেক করতে: string.IsNullOrEmpty (returnValue) && (returnValue == "1")
csharpforevermore

4
কনভার্ট না কেন? টু বুলিয়ান (1)? এটি একই কাজ করে এবং আপনি চেকটির জন্য কাঠামোটি ব্যবহার করছেন। আমি উপরের উত্তরটিও পছন্দ করি তবে কোনটি ব্যবহার করা ভাল?
ব্যবহারকারী 20358

105

কোডের একক লাইনে:

bool bVal = Convert.ToBoolean(Convert.ToInt16(returnValue))

4
আমি আপনার সংস্করণ ক্রিস পছন্দ করি কারণ প্রশ্নটি হিসাবে উল্লেখ করা হয়েছে, স্ট্রিংগুলির সাথে তুলনা করার পরিবর্তে বুলিয়ান ব্যবহার করতে দিন।
সোভেট

আমি আপনার সংস্করণটিকেও পছন্দ করি কারণ এটি উদ্দেশ্যটিকে আরও স্পষ্টভাবে জানায়।
জন্ম

এটি শুধুমাত্র "1" বা "0" এর জন্য উপযুক্ত। অন্য কোনও স্ট্রিংয়ের জন্য রিটার্ন মান হ'ল
নির্বিচারবাদী

12

আপনি যদি রূপান্তরটি সর্বদা সফল হতে চান তবে সম্ভবত স্ট্রিংকে রূপান্তর করার সর্বোত্তম উপায় হ'ল কেভিন যেমন করেন "1"তেমন trueএবং অন্য কিছু বিবেচনা করুন false। আপনি যদি চান যে রূপান্তরটি ব্যর্থ হয়েছে "1"বা ব্যতীত অন্য কোনও কিছু "0"ফিরে আসে তবে নিম্নলিখিতগুলি যথেষ্ট হবে (আপনি এটি কোনও সহায়ক পদ্ধতিতে রাখতে পারেন):

if (returnValue == "1")
{
    return true;
}
else if (returnValue == "0")
{
    return false;
}
else
{
    throw new FormatException("The string is not a recognized as a valid boolean value.");
}

অচেনা মানটি ধরতে ভাল ধারণা। নিশ্চিত যে আমি সে পথে যেতে চাই না, তবে এখনও একটি ভাল ধারণা।
ক্রিস

5

রিটার্নের ধরনকে সংখ্যায় সেট করুন - আপনার কোনও চর দরকার নেই (তাই এটি ব্যবহার করবেন না); একটি সংখ্যাসূচক মান (0/1) রূপান্তর করা যেতে পারে। টোবুলিয়ান (সংখ্যা)

অন্যথায়: কেভিনের উত্তরটি ব্যবহার করুন


আমি আশা করি আমরা রিটার্নের ধরণটি পরিবর্তন করতে পারি। তবে আমরা এটির সাথে আটকে আছি।
ক্রিস

10
Convert.ToBooleanকেবল সত্য / সত্য / মিথ্যা / মিথ্যা স্ট্রিং গ্রহণ করে
ইয়ারো

5

আপনি এই ফর্মটি ব্যবহার করতে পারেন:

return returnValue.Equals("1") ? true : false;

বা আরও সহজভাবে (জুরিজ কস্তানোভকে ধন্যবাদ):

return returnValue.Equals("1");

7
কেবল "? সত্য: মিথ্যা" বিটটি হারাবেন। এটি সম্পূর্ণ অপ্রয়োজনীয়। এটা {ফিরতি returnValue.Equals ( "1")} এ ছাড়বে
Jurijs Kastanovs

2

অথবা যদি বুলিয়ান মানটি না ফেরানো হয় তবে আপনি এরকম কিছু করতে পারেন:

bool boolValue = (returnValue == "1");

1

আমার সমাধান (vb.net):

Private Function ConvertToBoolean(p1 As Object) As Boolean
    If p1 Is Nothing Then Return False
    If IsDBNull(p1) Then Return False
    If p1.ToString = "1" Then Return True
    If p1.ToString.ToLower = "true" Then Return True
    Return False
End Function


-1

আপনি যদি রূপান্তর করতে চান না ust জাস্ট ব্যবহার;

 bool _status = status == "1" ? true : false;

সম্ভবত আপনি চান হিসাবে মানগুলি ফিরে আসবে।

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.