ভিবি.এনইটি-তে, And
এবং এর মধ্যে পার্থক্য কী AndAlso
? আমার কোনটি ব্যবহার করা উচিত?
ভিবি.এনইটি-তে, And
এবং এর মধ্যে পার্থক্য কী AndAlso
? আমার কোনটি ব্যবহার করা উচিত?
উত্তর:
And
অপারেটর উভয় পক্ষই মূল্যায়ণ যেখানে AndAlso
মূল্যায়ন ডান দিকে যদি এবং কেবল যদি বাম পাশে সত্য।
একটি উদাহরণ:
If mystring IsNot Nothing And mystring.Contains("Foo") Then
' bla bla
End If
উপরের একটি ব্যতিক্রম ছুঁড়ে যদি mystring = Nothing
If mystring IsNot Nothing AndAlso mystring.Contains("Foo") Then
' bla bla
End If
এই এক ব্যতিক্রম ছুঁড়ে না।
সুতরাং আপনি যদি সি # বিশ্ব থেকে এসে থাকেন তবে আপনি AndAlso
যেমন ব্যবহার করেন তেমন ব্যবহার করা উচিত &&
।
এখানে আরও তথ্য: http://www.panopticoncentral.net/2003/08/18/the-ballad-of-andalso- এবং-orelse/
Then
হবে কারণ এটি তার নিজস্ব মূলশব্দ ।
And
অপারেটর, চালিয়ে যাওয়ার আগে বিবৃতিতে সব শর্ত পরীক্ষা যেহেতু Andalso অপারেটর যদি তা জানেন শর্ত মিথ্যা বন্ধ হবে হবে। উদাহরণ স্বরূপ:
if x = 5 And y = 7
X 5 এর সমান কিনা এবং y এর সমান 7 হয় কিনা তা পরীক্ষা করে থাকে, যদি উভয়ই সত্য হয় তবে অবিরত থাকবে।
if x = 5 AndAlso y = 7
X এর সমান 5 হয় কিনা তা পরীক্ষা করে যদি এটি না হয় তবে y 7 হয় কিনা তা যাচাই করে না, কারণ এটি জানে যে শর্তটি ইতিমধ্যে মিথ্যা। (একে শর্ট সার্কিট বলা হয়))
প্রথম অংশটি সত্য না হলে স্পষ্টভাবে দ্বিতীয় অংশটি পরীক্ষা না করার কোনও কারণ থাকলে সাধারণত লোকেরা শর্ট সার্কিট পদ্ধতি ব্যবহার করে, যেমন যদি এটি পরীক্ষা করা হয় তবে এটি ব্যতিক্রম ছুঁড়ে মারবে। উদাহরণ স্বরূপ:
If Not Object Is Nothing AndAlso Object.Load()
যদি এটি ব্যবহার করা And
পরিবর্তে AndAlso
, এটা এখনও করার চেষ্টা করবে Object.Load()
এমনটি যদি সম্ভবও হয় nothing
, যা একটি ব্যতিক্রম নিক্ষেপ করবে।
and
/ কারও কারও or
কাছে কারণ না থাকলে সেগুলি ব্যবহার করা উচিত নয় - যার মধ্যে আমি মনে করি বৈধ ব্যক্তিরা খুব কম এবং এর মধ্যে খুব কম। ডিফল্টরূপে বেশিরভাগ অন্যান্য ভাষা শর্ট সার্কিটের একটি কারণ রয়েছে: সম্ভাব্য ব্যয়বহুল এক্সপ্রেশনগুলি যখন কোনও কিছুই অবদান না করে তখন মূল্যায়ন না করে ফলাফলের ধারণাটি ধরে রাখে। পরিস্থিতিতে স্ট্যাশিং পার্শ্ব প্রতিক্রিয়াগুলি ভাল, পাশের চোখের হওয়া উচিত। তবে এটি আমার মতামত ...
মজার বিষয় হ'ল উত্তরগুলির মধ্যে যেটি উল্লেখ করা হয়নি And
এবং Or
ভিবি.এনইটি তে বিট অপারেটর রয়েছে OrElse
এবং AndAlso
তারা কঠোরভাবে বুলিয়ান অপারেটর are
Dim a = 3 OR 5 ' Will set a to the value 7, 011 or 101 = 111
Dim a = 3 And 5 ' Will set a to the value 1, 011 and 101 = 001
Dim b = 3 OrElse 5 ' Will set b to the value true and not evaluate the 5
Dim b = 3 AndAlso 5 ' Will set b to the value true after evaluating the 5
Dim c = 0 AndAlso 5 ' Will set c to the value false and not evaluate the 5
দ্রষ্টব্য : একটি শূন্য নয় পূর্ণসংখ্যার বিবেচনা করা হয় true
; Dim e = not 0
সেট হবে e
থেকে -1
প্রদর্শক Not
একটি বিট অপারেটর।
||
এবং &&
(গ # সংস্করণ OrElse
এবং AndAlso
) গত মূল্যায়ন অভিব্যক্তি যা হবে আসতে 3
এবং 5
যথাক্রমে। এটি v || 5
আপনাকে যখন সি # তে আইডিয়মটি ব্যবহার করতে দেয় 5
তখন কখন (বা একটি পূর্ণসংখ্যা) v
হয় null
বা এক্সপ্রেশনটির 0
মান এবং v
অন্যথায় এর মান হিসাবে দেয় । শব্দার্থের পার্থক্যটি ভিবি.এনইটি অফ গার্ড অফ সি-র মধ্যে একটি সি # প্রোগ্রামারকে ছুঁড়ে ফেলতে পারে কারণ এই "ডিফল্ট মান আইডিয়ম" ভিবি.নেটে কাজ করে না।
সুতরাং, প্রশ্নের উত্তর দিতে : ব্যবহার করুন Or
এবং And
বিট ক্রিয়াকলাপের জন্য (পূর্ণসংখ্যা বা বুলিয়ান)। ব্যবহারের OrElse
এবং AndAlso
"শর্ট সার্কিট" একটি অপারেশনে সময় বাঁচাতে, অথবা এটি মূল্যায়নের পূর্বে মূল্যায়ন বৈধতা পরীক্ষার জন্য। If valid(evaluation) andalso evaluation then
অথবাif not (unsafe(evaluation) orelse (not evaluation)) then
বোনাস: নিম্নলিখিতটির মান কত?
Dim e = Not 0 And 3
||
এবং &&
সঙ্গে ছিল ??
। যদিও এমন ভাষা রয়েছে যেখানে ||
অ-মিথ্যা মানটি ফিরিয়ে দেবে, সি # তাদের মধ্যে একটি নয়, এবং একটি ফেরত দেয় bool
(উত্তোলনযোগ্য অপারেটর অপারেটরগুলি বাদ দিয়ে, যেখানে আপনি Nullable<bool>
ফলাফল পাবেন)
If Bool1 And Bool2 Then
বুল 1 এবং বুল 2 উভয়কেই মূল্যায়ন করে
If Bool1 AndAlso Bool2 Then
যদি বুল 1 সত্য হয় তবেই বুল 2 এর মূল্যায়ন করে।
পার্শ্ব প্রতিক্রিয়াগুলি খারাপ বলে all সমস্ত লোকের জন্যই: এক জায়গায় দুটি পার্শ্ব প্রতিক্রিয়া থাকা ভাল এমন জায়গায় দুটি ফাইলের বিষয়বস্তু পড়তে হবে।
While File1.Seek_Next_Row() And File2.Seek_Next_Row()
Str1 = File1.GetRow()
Str2 = File2.GetRow()
End While
And
শর্তটি যাচাই করে প্রতিবার সারি ব্যবহার করা হয় তা নিশ্চিত করে ব্যবহার করে। যদিও AndAlso
শেষের লাইনটি পড়তে পারে File1
এবং File2
গ্রাসকৃত লাইন ছাড়াই ছেড়ে যেতে পারে ।
অবশ্যই উপরের কোডটি কাজ করবে না, তবে আমি সর্বদা এই জাতীয় পার্শ্ব প্রতিক্রিয়াগুলি ব্যবহার করি এবং এটি " খারাপ " বা " মন্দ " কোড হিসাবে বিবেচনা করব না কারণ কেউ কেউ আপনাকে বিশ্বাস করতে পরিচালিত করবে। এটি পড়া সহজ এবং দক্ষ।
AndAlso অনেকটা And এর মতো এবং এটি সি #, সি ++ ইত্যাদির মতো && এর মতো কাজ করে except
পার্থক্যটি হ'ল যদি প্রথম ধারা (AndAlso এর আগে একটি) সত্য হয় তবে দ্বিতীয় ধারাটি কখনই মূল্যায়ন করা হয় না - যৌগিক যৌক্তিক প্রকাশটি "শর্ট সার্কিট" হয়।
এটি কখনও কখনও খুব দরকারী, যেমন একটি এক্সপ্রেশন যেমন:
If Not IsNull(myObj) AndAlso myObj.SomeProperty = 3 Then
...
End If
পুরানো এবং উপরের এক্সপ্রেশনটিতে মাইওবিজে নਾਲ থাকলে একটি নালারফেরান এক্সেক্সপশন নিক্ষেপ করবে।
স্ট্যাক ওভারফ্লো প্রশ্নটিও দেখুন: আমি কি সর্বদা AndAlso এবং OrElse অপারেটর ব্যবহার করা উচিত? ।
এছাড়াও: যাঁরা And
অভিব্যক্তিটির ডান দিকের আপনার প্রয়োজনীয় পার্শ্ব-প্রতিক্রিয়াটি ব্যবহার করেছেন উল্লেখ করার জন্য একটি মন্তব্য :
যদি ডান পাশের আপনার প্রয়োজনীয় একটি পার্শ্ব প্রতিক্রিয়া থাকে তবে এটি "এবং" ব্যবহার না করে কেবল বাম দিকে সরান। উভয় পক্ষের পার্শ্ব প্রতিক্রিয়া থাকলে আপনার কেবল সত্যই "এবং" প্রয়োজন । এবং যদি আপনার অনেকগুলি পার্শ্ব প্রতিক্রিয়া চলতে থাকে তবে আপনি সম্ভবত অন্য কোনও ভুল করছেন। সাধারণভাবে, আপনার সত্যিই AndAlso পছন্দ করা উচিত।
উপরের উত্তরগুলি ছাড়াও, AndAlso শর্ট সার্কিট হিসাবে পরিচিত একটি কন্ডিশনার প্রক্রিয়া সরবরাহ করে। অনেক প্রোগ্রামিং ল্যাঙ্গুয়েজে vb.net এর মতই এই কার্যকারিতাটি নির্মিত হয় এবং অযৌক্তিক মূল্যায়নগুলি কেটে দীর্ঘ অবস্থার বিবৃতিতে যথেষ্ট কার্যকারিতা বৃদ্ধি সরবরাহ করতে পারে।
অন্য অনুরূপ শর্তটি হল ওড়েল শর্ত যা বাম শর্তটি মিথ্যা হলে কেবল সঠিক শর্তটি পরীক্ষা করে দেখাবে, এইভাবে সত্যিকারের শর্তটি পাওয়া যাওয়ার পরে অযৌক্তিক অবস্থার চেকগুলি কেটে ফেলা হয়।
আমি আপনাকে সর্বদা সংক্ষিপ্ত সার্কিট প্রক্রিয়াগুলি ব্যবহার করার পরামর্শ দিচ্ছি এবং আপনার শর্তাধীন বিবৃতিগুলি এমনভাবে গঠন করুন যাতে এর মাধ্যমে সবচেয়ে বেশি উপকৃত হতে পারে। উদাহরণস্বরূপ, আপনার সর্বাধিক দক্ষ এবং দ্রুততম শর্তাদি প্রথমে পরীক্ষা করুন যাতে আপনি যখন আপনার একেবারে দীর্ঘ পরিস্থিতি চালান তখনই যখন আপনি একেবারে অন্য সময় শর্ট সার্কিট করতে হয়।
আমাদের বেশিরভাগের জন্য অরলেস এবং অ্যান্ডলস কয়েকটি বিভ্রান্তিকর ব্যতিক্রম (1% এরও কম যেখানে আমাদের ও ও এন্ড ব্যবহার করতে পারে) বাদ দিয়ে কৌশলটি করবে।
লোকেরা তাদের বুলিয়ান লজিকগুলি প্রদর্শন করে এবং এটিকে রকেট বিজ্ঞানের মতো দেখানোর দ্বারা চালিত না হওয়ার চেষ্টা করুন।
এটি বেশ সহজ এবং সোজা এগিয়ে এবং মাঝে মাঝে আপনার সিস্টেমটি প্রত্যাশার মতো কাজ করতে পারে না কারণ এটি আপনার যুক্তিটিকে প্রথম স্থানে পছন্দ করে না। এবং তবুও আপনার মস্তিষ্ক আপনাকে বলে চলেছে যে তার যুক্তিটি 100% পরীক্ষিত এবং প্রমাণিত এবং এটি কার্যকর হওয়া উচিত। ঠিক সেই মুহুর্তে আপনার মস্তিষ্কের উপর আস্থা রাখা বন্ধ করুন এবং তাকে আবারও ভাবতে বলুন বা (অরেলস বা সম্ভবত ওড়েলস নয়) আপনি নিজেকে অন্য কোনও কাজ সন্ধান করতে বাধ্য করেন যার পক্ষে বেশি যুক্তি লাগবে না।
কেস ব্যবহার করুন:
"এবং" দিয়ে সংকলকটি সমস্ত শর্তাদি পরীক্ষা করবে যদি আপনি পরীক্ষা করে থাকেন যে কোনও বস্তু "কিছুই না" হতে পারে এবং তারপরে আপনি তার বৈশিষ্ট্যগুলির মধ্যে একটি পরীক্ষা করছেন তবে আপনার রান টাইম ত্রুটি হবে।
তবে AndAlso এর সাথে প্রথম "মিথ্যা" শর্তে এটি পরেরটি পরীক্ষা করবে যাতে আপনার কোনও ত্রুটি না হয়।