ইসনথিং বনাম ইজ নথিং কিছু নেই


130

এখানে যে কেউ ভিবি.এনইটি ব্যবহার করে IsNothingএবং এর বিপরীতে Is Nothing(উদাহরণস্বরূপ, If IsNothing(anObject)বা If anObject Is Nothing...) ব্যবহার করার পক্ষে বা বিপক্ষে তার দৃ strong় পছন্দ রয়েছে ? যদি তাই হয় তবে কেন?

সম্পাদনা: আপনি যদি মনে করেন যে তারা উভয়ই সমানভাবে গ্রহণযোগ্য, আপনি কি মনে করেন যে কোনওটি চয়ন করা এবং এটির সাথে থাকা ভাল, বা তাদের সাথে মিশ্রিত করা কি ঠিক?


3
আছে অনেক ভাল কারণ ব্যবহার এড়াতেIsNothing()
KyleMit

@ জেসি চিশলম, একটি মন্তব্য করার জন্য অনেক কিছু আছে, তবে আমার আগের মন্তব্যটি এই নিবন্ধটিতে এই লিঙ্কটি পোস্ট করেছে যা ৫ টি ভিন্ন ভিন্ন ব্লগের
কিছুই.

কারিগরি উত্তরগুলি সত্যিই আকর্ষণীয়, তবে লজ্জার প্রশ্নটি কিছুটা উন্মুক্ত ছেড়ে দেওয়া হয়েছে এবং কোনও উত্তর না দিয়ে কিছু উত্তর উত্পন্ন হয়েছে, কেবল ক্রমবর্ধমান অস্পষ্ট ব্যক্তিগত পছন্দকে
আন্ডারস্কোর_

উত্তর:


125

আপনি যদি এমএসআইএলকে কার্যকর করা হচ্ছে তার দিকে একবার নজর দেন তবে আপনি দেখতে পাবেন যে এটি ঠিক একই কোডে সংকলন করছে না। আপনি যখন ইসনথিং () ব্যবহার করেন তখন এটি কেবলমাত্র অভিব্যক্তির মূল্যায়নের বিরোধিতা হিসাবে সেই পদ্ধতিতে কল দেয়।

"ইস কিছুই নয়" ব্যবহারের দিকে ঝুঁকির ঝুঁকির কারণ আমি যখন এড়িয়ে যাচ্ছি তখন "আইসনথিং (অবজেক্ট) না হয়ে" ইসনট কিছুই না "হয়ে যায় যা আমি ব্যক্তিগতভাবে মনে করি যে এটি আরও পাঠযোগ্য।


46

আমি দেখতে পেয়েছি যে প্যাট্রিক স্টিল তার ব্লগে এই প্রশ্নের সর্বোত্তম জবাব দিয়েছেন: ইসনথিং এড়ানো ()

প্যাট্রিক স্টিল তার পোস্টের জন্য কৃতিত্ব পেতে তা নিশ্চিত করতে আমি তার কোনও উত্তর এখানে অনুলিপি করিনি। তবে আমি মনে করি আপনি যদি তার পোস্টটি পড়া উচিত তবে কি ইজ নথিং বা ইসনথিং ব্যবহার করবেন কিনা তা স্থির করার চেষ্টা করছেন। আমি মনে করি আপনি সম্মত হবেন যে ইজ কিছুই কিছুই সেরা পছন্দ নয়।

সম্পাদনা করুন - ভোটকফের মন্তব্য এখানে

আংশিক নিবন্ধের বিষয়বস্তু: আরও কোড পর্যালোচনা করার পরে আমি আপনাকে এড়ানো উচিত অন্য কারণ খুঁজে পেয়েছি: এটি মানের ধরণগুলি গ্রহণ করে! স্পষ্টতই, যেহেতু ইসনথিং () কোনও ফাংশন যা কোনও 'অবজেক্ট' গ্রহণ করে, তাই আপনি যা কিছু চান তা পাস করতে পারেন। যদি এটি কোনও মান ধরণের হয়,। নেট এটি কোনও বস্তুর মধ্যে বাক্সবিন্যাস করবে এবং এটি ইসনথিং-তে প্রেরণ করবে - যা সর্বদা বাক্সের মানতে মিথ্যা ফিরিয়ে দেয়! ভিবি.এনইটি সংকলক "ইস কিছু নয়" শৈলীর বাক্য গঠন পরীক্ষা করে এবং যদি আপনি কোনও মানের ধরণের "ইস কিছু না" করার চেষ্টা করেন তবে সংকলন করবেন না। তবে ইসনথিং () ফাংশন অভিযোগ ছাড়াই সংকলন করে। -পিস্টিল - ভোটকফি


7
আংশিক নিবন্ধের বিষয়বস্তু: আরও কোড পর্যালোচনা করার পরে আমি আপনাকে এড়ানো উচিত অন্য কারণ খুঁজে পেয়েছি: এটি মানের ধরণগুলি গ্রহণ করে! স্পষ্টতই, যেহেতু ইসনথিং () কোনও ফাংশন যা কোনও 'অবজেক্ট' গ্রহণ করে, তাই আপনি যা কিছু চান তা পাস করতে পারেন। যদি এটি কোনও মান ধরণের হয়,। নেট এটি কোনও বস্তুর মধ্যে বাক্সবিন্যাস করবে এবং এটি ইসনথিং-তে প্রেরণ করবে - যা সর্বদা বাক্সের মানতে মিথ্যা ফিরিয়ে দেয়! ভিবি.এনইটি সংকলক "ইস কিছু নয়" শৈলীর বাক্য গঠন পরীক্ষা করে এবং যদি আপনি কোনও মানের ধরণের "ইস কিছু না" করার চেষ্টা করেন তবে সংকলন করবেন না। তবে ইসনথিং () ফাংশন অভিযোগ ছাড়াই সংকলন করে। -পিস্টিল
ভোটকফি

7
লিঙ্কটি মারা যাবে কিনা তা আপনি জানেন না এমন কিছু লিখিত সামগ্রী পোস্ট করেছেন এবং আমি ভেবেছিলাম এটি আচ্ছাদনটিতে একটি ভাল পয়েন্ট যুক্ত করেছে।
ভোটকফি

33

আপনি একেবারে ব্যবহার এড়ানো উচিত IsNothing()

ইসনথিং () ভিএস ইজ নথিং-এর নিবন্ধটি থেকে এখানে 4 টি কারণ রয়েছে

  1. সর্বাধিক গুরুত্বপূর্ণ, IsNothing(object)সবকিছু কি এটি একটি অবজেক্ট হিসাবে এমনকি মূল্য ধরণের হিসাবেও পাস করেছে! যেহেতু মানের ধরণগুলি হতে পারে না Nothing, এটি একটি সম্পূর্ণ নষ্ট চেক।
    নিম্নলিখিত উদাহরণটি ধরুন:

    Dim i As Integer
    If IsNothing(i) Then
       ' Do something 
    End If

    এটি সংকলন করে সূক্ষ্মভাবে চালিত হবে, যদিও এটি:

    Dim i As Integer
    If i Is Nothing Then
        '   Do something 
    End If

    সংকলন করবে না, পরিবর্তে সংকলক ত্রুটি বাড়িয়ে তুলবে:

    'ইজ' অপারেটর 'পূর্ণসংখ্যার' টাইপের অপারেন্ডগুলি গ্রহণ করে না।
    অপারেন্ডস অবশ্যই রেফারেন্স বা নালাগুলি ধরণের হতে হবে।

  2. IsNothing(object)আসলে একটি অংশ Microsoft.VisualBasic.dll
    ভিজুয়ালবাসিক লাইব্রেরিতে আপনার অবিশ্বস্ত নির্ভরতা হওয়ায় এটি অনাকাঙ্ক্ষিত।

  3. এটি ধীরে ধীরে - 33.76% আস্তে আস্তে (1000000000 এরও বেশি পুনরুক্তি)!

  4. সম্ভবত ব্যক্তিগত পছন্দ, তবে যোদা শর্তেরIsNothing() মতো পড়ে । কোনও ভেরিয়েবলের দিকে তাকালে আপনি এটির তদন্তের বিষয় হিসাবে এটির স্থিতি পরীক্ষা করছেন।

    অর্থাত্ এটি x করে? --- না হয় xএকটি সম্পত্তি ing এটা ?

    সুতরাং আমি মনে করি এর If a IsNot Nothingচেয়ে ভাল পড়েIf Not IsNothing(a)


29

আমি "ইস কিছু না" এর সাথে একমত। উপরে উল্লিখিত হিসাবে, "ইসনট কিছুই না" দিয়ে এড়িয়ে চলা সহজ।

আমি এটি পড়তে সহজ মনে করি ...

If printDialog IsNot Nothing Then
    'blah
End If

এই তুলনায়...

If Not obj Is Nothing Then
    'blah
End If

5

ভিবি এই দুটি বিষয়কে "ইংরাজির মতো" এবং এমন ভাষাতে অভ্যস্ত যারা () এবং {} অনেকগুলি ভাষাতে অভ্যস্ত তাদের পক্ষে স্বাচ্ছন্দ্য বোধ করার মতো জিনিসগুলি দিয়ে পূর্ণ। উদাহরণস্বরূপ, "ইংলিশের মতো" পাশে ... ভিবিতে " নয় " কীওয়ার্ড রয়েছে ... এবং না, আমি রসিকতা করছি না। এবং অন্যদিকে, আপনি ইতিমধ্যে সম্ভবত জানেন যে আপনি () চাইলে ফাংশন কলগুলি ব্যবহার করতে পারেন (তবে) করতে হবে না।

আমি ইসনথিং () পছন্দ করি না ... তবে আমি সি এবং সি # ব্যবহার করি, তাই আরামদায়ক just এবং আমি মনে করি এটি আরও পাঠযোগ্য। তবে যা আপনার কাছে বেশি স্বাচ্ছন্দ্য বোধ করে তার সাথে যান।


3
আপনার লিঙ্কটি মারা গেছে সুতরাং যার মূল্য এখানে রয়েছে তা একটি লাইভ: ওয়েব.আরচিভ.আর.ইউবি / ২০০৫০৩০০০১০55৫০ / http : //ea.3leaf.com/2004/08/… তবে উল্লেখযোগ্য যে জনপ্রিয় বিশ্বাসের বিপরীতে এটি সত্য না.
ম্যাট উইলকো

5

আমি "ইস কিছু না" বিকল্পের দিকে ঝুঁকছি, কারণ এটি আরও OO বলে মনে হচ্ছে।

নিশ্চয় ভিসুয়াল বেসিক নয় পেয়েছিলাম শব্দ নয়।


VB.NET কি এক্সটেনশন পদ্ধতিগুলি করতে পারে? :)
klkitchens


1

আমি প্রাথমিকভাবে ইসনথিং ব্যবহার করেছি তবে আমি নতুন প্রকল্পগুলিতে ইস নথিং ব্যবহারের দিকে অগ্রসর হয়েছি, মূলত পাঠযোগ্যতার জন্য। ইসনিংথিংয়ের সাথে আমি কেবল সময়টি রক্ষা করি যদি আমি কোডটি বজায় রাখি যেখানে এটি সর্বত্র ব্যবহৃত হয় এবং আমি ধারাবাহিকভাবে থাকতে চাই।


-2

ইজ নথিংয়ের জন্য এমন কোনও বস্তুর প্রয়োজন নেই যা মূল্য কিছুই হিসাবে নির্ধারিত হয়েছে। ইসনথিং () সংখ্যার প্রকার সহ, এমন কোনও ভেরিয়েবল নিতে পারে যা আরম্ভ করা হয়নি। Testingচ্ছিক পরামিতি পাস করা হয়েছে কিনা পরীক্ষা করার সময় এটি উদাহরণস্বরূপ কার্যকর useful


এটা ভুল. আপনি কি নিশ্চিত যে এটি ভুল উপায়ে পাওয়া যায় নি? " IsNothing রেফারেন্স ধরনের কাজ করার উদ্দেশ্যে। একটি মান ধরনের একটি মান রাখা যাবে না কিছুই যদি বরাদ্দ তার ডিফল্ট মান এবং ফেরত্ পাওয়া যাবে কিছুই [...] IsNothing সবসময় ফেরৎ মিথ্যা ।" তবে "যে কোনও ডেটা টাইপের ডিফল্ট মানটি উপস্থাপন করে [[...] মান ধরণের জন্য, [এটি] মান প্রকারটি হ্রাসযোগ্য কিনা তার উপর নির্ভর করে।" তাহলে ভাল না ? Nothing Is Nothing
আন্ডারস্কোর_
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.