সি # এর ??
অপারেটরের জন্য কি কোনও ভিবি.এনইটি সমতুল্য ?
সি # এর ??
অপারেটরের জন্য কি কোনও ভিবি.এনইটি সমতুল্য ?
উত্তর:
If()
দুটি আর্গুমেন্ট ( মাইক্রোসফ্ট ডকুমেন্টেশন ) সহ অপারেটরটি ব্যবহার করুন :
' Variable first is a nullable type.
Dim first? As Integer = 3
Dim second As Integer = 6
' Variable first <> Nothing, so its value, 3, is returned.
Console.WriteLine(If(first, second))
second = Nothing
' Variable first <> Nothing, so the value of first is returned again.
Console.WriteLine(If(first, second))
first = Nothing second = 6
' Variable first = Nothing, so 6 is returned.
Console.WriteLine(If(first, second))
If()
ভিবিতে বিবৃতিটি if...?...:
সি # তে সমান , ??
অপারেটর নয়
??
(এই প্রশ্নের আরও উত্তর দেখুন: stackoverflow.com/a/20686360/1474939 )
If
তিনটি পরামিতি সহ ভিবি কীভাবে ব্যবহার করবেন তা দেখায় । যে না সি # 'গুলি অনুরূপ ??
অপারেটর। দুটি যুক্তি সহ উত্তরের উত্তর হ'ল কোড মাভেরিকের ইফ । (নিকের একই উত্তর ছিল, বছর আগে, কিন্তু এমএসডিএন থেকে ব্যাখ্যাটি অন্তর্ভুক্ত নয়।)
IF()
অপারেটর তোমার জন্য কৌতুক করতে হবে:
value = If(nullable, defaultValueIfNull)
গৃহীত উত্তরের কোনও ব্যাখ্যা নেই এবং এটি কেবল একটি লিঙ্ক।
অতএব, আমি ভেবেছিলাম আমি এমন একটি উত্তর রেখে যাব যা If
এমএসডিএন থেকে অপারেটর কীভাবে কাজ করে তা ব্যাখ্যা করে :
শর্তসাপেক্ষে দুটি মানগুলির মধ্যে একটিকে ফেরত দিতে শর্ট সার্কিট মূল্যায়ন ব্যবহার করে। তাহলে অপারেটর তিনটি আর্গুমেন্ট সহ বা দুই আর্গুমেন্ট সহ বলা যায় না।
If( [argument1,] argument2, argument3 )
যদি প্রথম যুক্তি বাদ দেওয়া যেতে পারে। এটি অপারেটরটিকে মাত্র দুটি যুক্তি ব্যবহার করে কল করতে সক্ষম করে। নিম্নলিখিত তালিকা প্রযোজ্য শুধুমাত্র যখন এমন অপারেটর দুই আর্গুমেন্ট সহ বলা হয়।
Term Definition
---- ----------
argument2 Required. Object. Must be a reference or nullable type.
Evaluated and returned when it evaluates to anything
other than Nothing.
argument3 Required. Object.
Evaluated and returned if argument2 evaluates to Nothing.
যখন বুলিয়ান আর্গুমেন্ট বাদ দেওয়া হয়, প্রথম যুক্তিটি অবশ্যই একটি রেফারেন্স বা নলযোগ্য টাইপ হতে হবে। যদি প্রথম আর্গুমেন্ট কোনওটির জন্য মূল্যায়ন করে না , তবে দ্বিতীয় তর্কটির মান ফিরে আসবে। অন্যান্য সমস্ত ক্ষেত্রে, প্রথম যুক্তির মান ফিরে আসে। নিম্নলিখিত মূল্যায়ন ব্যাখ্যা করে যে এই মূল্যায়ন কীভাবে কাজ করে।
' Variable first is a nullable type.
Dim first? As Integer = 3
Dim second As Integer = 6
' Variable first <> Nothing, so its value, 3, is returned.
Console.WriteLine(If(first, second))
second = Nothing
' Variable first <> Nothing, so the value of first is returned again.
Console.WriteLine(If(first, second))
first = Nothing
second = 6
' Variable first = Nothing, so 6 is returned.
Console.WriteLine(If(first, second))
কীভাবে দুটিরও বেশি মান (নেস্টেড if
) হ্যান্ডেল করা যায় তার একটি উদাহরণ :
Dim first? As Integer = Nothing
Dim second? As Integer = Nothing
Dim third? As Integer = 6
' The LAST parameter doesn't have to be nullable.
'Alternative: Dim third As Integer = 6
' Writes "6", because the first two values are "Nothing".
Console.WriteLine(If(first, If(second, third)))
আপনি একটি এক্সটেনশন পদ্ধতি ব্যবহার করতে পারেন। এটি একটি এসকিউএল এর মতো কাজ করে COALESCE
এবং সম্ভবত আপনি যা যা পরীক্ষা করার চেষ্টা করছেন তার জন্য ওভারকিল, তবে এটি কার্যকর হয়।
''' <summary>
''' Returns the first non-null T based on a collection of the root object and the args.
''' </summary>
''' <param name="obj"></param>
''' <param name="args"></param>
''' <returns></returns>
''' <remarks>Usage
''' Dim val as String = "MyVal"
''' Dim result as String = val.Coalesce(String.Empty)
''' *** returns "MyVal"
'''
''' val = Nothing
''' result = val.Coalesce(String.Empty, "MyVal", "YourVal")
''' *** returns String.Empty
'''
''' </remarks>
<System.Runtime.CompilerServices.Extension()> _
Public Function Coalesce(Of T)(ByVal obj As T, ByVal ParamArray args() As T) As T
If obj IsNot Nothing Then
Return obj
End If
Dim arg As T
For Each arg In args
If arg IsNot Nothing Then
Return arg
End If
Next
Return Nothing
End Function
অন্তর্নির্মিত কেবল দুটি অপ্রয়োজনীয় পছন্দ If(nullable, secondChoice)
পরিচালনা করতে পারে । এখানে, একটি হিসাবে কাঙ্ক্ষিত হিসাবে অনেক পরামিতি করতে পারেন । প্রথম অ-নাল একটি ফিরে আসবে এবং বাকী প্যারামিটারগুলি তার পরে মূল্যায়ন করা হবে না (সংক্ষিপ্ত সার্কিট, যেমন / এবং / )Coalesce
AndAlso
&&
OrElse
||
Return args.FirstOrDefault(Function(arg) arg IsNot Nothing)
এর বেশিরভাগ সমাধানগুলির মধ্যে একটি উল্লেখযোগ্য সীমাবদ্ধতা হ'ল তারা শর্ট সার্কিট করবে না। তারা আসলে সমতুল্য নয় ??
।
If
পূর্ববর্তী প্যারামিটারটি কিছু না মূল্যায়ন না করে বিল্ট-ইন অপারেটর পরবর্তী পরামিতিগুলির মূল্যায়ন করবে না।
নিম্নলিখিত বিবৃতি সমতুল্য:
সি শার্প
var value = expression1 ?? expression2 ?? expression3 ?? expression4;
ভিবি
dim value = if(expression1,if(expression2,if(expression3,expression4)))
যেখানে ??
কাজ করে সেখানে এটি কাজ করবে। অন্যান্য সমাধানগুলির যে কোনওটি চূড়ান্ত সতর্কতার সাথে ব্যবহার করতে হবে, কারণ তারা সহজেই রান-টাইম বাগগুলি প্রবর্তন করতে পারে।
Check Microsoft documentation about If Operator (Visual Basic) here: https://docs.microsoft.com/en-us/dotnet/visual-basic/language-reference/operators/if-operator
If( [argument1,] argument2, argument3 )
Here are some examples (VB.Net)
' This statement prints TruePart, because the first argument is true.
Console.WriteLine(If(True, "TruePart", "FalsePart"))
' This statement prints FalsePart, because the first argument is false.
Console.WriteLine(If(False, "TruePart", "FalsePart"))
Dim number = 3
' With number set to 3, this statement prints Positive.
Console.WriteLine(If(number >= 0, "Positive", "Negative"))
number = -1
' With number set to -1, this statement prints Negative.
Console.WriteLine(If(number >= 0, "Positive", "Negative"))