এই সব কি সমান? আমি কোন পরিস্থিতিতে অন্যের চেয়ে প্রত্যেককে বেছে নিতে পারি?
var.ToString ()
CStr (Var)
সিটি টাইপ (ভ্যার, স্ট্রিং)
ডাইরেক্টকাস্ট (বিভিন্ন, স্ট্রিং)
সম্পাদনা: নটমাইফেল্ফ থেকে পরামর্শ …
- ট্রাইকাস্ট (ভ্যার, স্ট্রিং)
এই সব কি সমান? আমি কোন পরিস্থিতিতে অন্যের চেয়ে প্রত্যেককে বেছে নিতে পারি?
var.ToString ()
CStr (Var)
সিটি টাইপ (ভ্যার, স্ট্রিং)
ডাইরেক্টকাস্ট (বিভিন্ন, স্ট্রিং)
সম্পাদনা: নটমাইফেল্ফ থেকে পরামর্শ …
উত্তর:
এগুলি কিছুটা পৃথক এবং সাধারণত একটি গ্রহণযোগ্য ব্যবহার থাকে।
var.ToString()আপনাকে কোনও বস্তুর স্ট্রিং প্রতিনিধিত্ব করতে চলেছে, এটি যে ধরণের তা নির্বিশেষে। যদি varইতিমধ্যে স্ট্রিং না হয় তবে এটি ব্যবহার করুন ।CStr(var)ভিবি স্ট্রিং কাস্ট অপারেটর। আমি কোনও ভিবি লোক নই, তাই আমি এড়িয়ে চলার পরামর্শ দেব তবে এটি আসলে কোনও ক্ষতি করতে পারে না। আমি মনে করি এটি মূলত একই রকম CType।CType(var, String) প্রদত্ত প্রকারটিকে কোনও স্ট্রিংয়ে রূপান্তর করবে, যে কোনও সরবরাহকৃত রূপান্তরকারী অপারেটর ব্যবহার করে।DirectCast(var, String)স্ট্রিংয়ে কোনও অবজেক্ট আপ-কাস্ট করতে ব্যবহৃত হয়। যদি আপনি জানেন যে কোনও অবজেক্ট ভেরিয়েবল আসলে, একটি স্ট্রিং, এটি ব্যবহার করুন। এটি (string)varসি # তে সমান ।TryCast(@ নোটমাইলে নিজে যেমন উল্লেখ করেছেন ) এর মত DirectCast, তবে Nothingপরিবর্তনটি ব্যতিক্রম না ছড়ানোর পরিবর্তে স্ট্রিংয়ে রূপান্তরিত করা না গেলে এটি ফিরে আসবে । এটি var as stringসি # তে সমান । TryCastদুটিই MSDN পৃষ্ঠার খুব ভাল তুলনা রয়েছে।TryCastশুধুমাত্র মান ধরনের জন্য কাজ করে যেহেতু এটি একটি টাইপ থাকতে পারে যে করা প্রয়োজন Nothingএকটি মান যেমন
CStr(var)ভ্যারটি DBNull.Value হলে গলা টিপে এবং ব্যতিক্রম বাড়িয়ে তুলবে, তবে বিকল্পটি Convert.ToString(var)খালি স্ট্রিংটি ফিরিয়ে দেবে।
Dim myList AS ArrayList=new ArrayListআপনি যখন লিখুন (From e In myList select CType(e.Name,String)).ToArray()এটি কাজ করে না। আমি লিখতে এসেছি ... select CType(e.Name.ToString,String)).ToArray()এবং আমি আমার হাসি পুনরুদ্ধার করেছি।
Cstr() আরও ভাল পারফরম্যান্সের জন্য ইনলাইন সংকলিত হয়।
CType কোনও রূপান্তর অপারেটর সংজ্ঞায়িত হলে প্রকারের মধ্যে কাস্টের অনুমতি দেয়
ToString() বেস টাইপ এবং স্ট্রিংয়ের মধ্যে রূপান্তর সম্ভব না হলে ব্যতিক্রম ছুঁড়ে দেয়।
TryParse()স্ট্রিং থেকে বেস পর্যন্ত typeifসম্ভব অন্যথায় মিথ্যা ফিরিয়ে দেয়
DirectCastপ্রকারগুলি যদি উত্তরাধিকারের মাধ্যমে সম্পর্কিত হয় বা একটি সাধারণ ইন্টারফেস ভাগ করে নেওয়া হয় তবে theালাই সম্ভব না হলে একটি ব্যতিক্রম ছুঁড়ে trycastমারবে , উদাহরণস্বরূপ কিছুই ফিরিয়ে দেবে না
এমএসডিএন ইঙ্গিত করে বলে মনে হচ্ছে যে নির্দিষ্ট ধরণের জন্য সিএক্সএক্সএক্স কাস্টগুলি ভিবি। নেট এ কর্মক্ষমতা উন্নত করতে পারে কারণ তারা ইনলাইন কোডে রূপান্তরিত হয়েছে। কিছু কারণে এটি কিছু ক্ষেত্রে সিটিটাইপের বিপরীতে ডাইরেক্টকাস্টেরও পরামর্শ দেয় (ডকুমেন্টেশনে বলা হয় যে উত্তরাধিকারের সম্পর্ক থাকার সাথে সাথে; এটি বিশ্বাস করে এর অর্থ কাস্টের বিচক্ষণতা সংকলনের সময় পরীক্ষা করা হয় এবং অপ্টিমাইজেশন প্রয়োগ করা যেতে পারে যেখানে সিটি টাইপ সর্বদা ব্যবহার করে ভিবি রানটাইম।)
আমি যখন ভিবি। নেট কোড লিখছি তখন আমি কী ব্যবহার করি তা নির্ভর করে আমি কী করছি। যদি এটির প্রোটোটাইপ কোডটি আমি ফেলে দিতে যাচ্ছি তবে আমি টাইপ করতে যা কিছু করব তা ব্যবহার করি। যদি আমি কোডটি সম্পর্কে গুরুতর হয় তবে আমি একটি সিএক্সএক্সএক্সএক্স কাস্ট ব্যবহার করার চেষ্টা করি। যদি কারও অস্তিত্ব না থাকে তবে আমি ডাইরেক্টকাস্ট ব্যবহার করি যদি আমার যুক্তিযুক্ত যে বিশ্বাস আছে যে উত্তরাধিকারের সম্পর্ক রয়েছে। যদি এমন পরিস্থিতি হয় যেখানে কাস্টটি সফল হয়ে উঠতে পারে তবে আমার ধারণা নেই (ব্যবহারকারীর ইনপুট -> পূর্ণসংখ্যার উদাহরণস্বরূপ), তবে আমি ট্রাই কাস্ট ব্যবহার করি যাতে ব্যবহারকারীর ব্যতিক্রম টস করার চেয়ে আরও কিছু বন্ধুত্বপূর্ণ কিছু করা যায়।
একটা জিনিস যা আমি কাঁপতে পারি না তা হ'ল আমি সিএসটিআরের পরিবর্তে টসস্ট্রিং ব্যবহার করার ঝোঁক দিচ্ছি তবে অনুমান করা যায় যে সিএসটি দ্রুত।
আমি নিম্নলিখিত বাক্য গঠন পছন্দ:
Dim number As Integer = 1
Dim str As String = String.TryCast(number)
If str IsNot Nothing Then
হাহ আপনি বলতে পারেন আমি সাধারণত সি # তে কোড লিখি। 8)
আমি ট্রাই কাস্টকে বেশি পছন্দ করি কারণ আপনার কাস্টিং ব্যতিক্রমগুলির ওভারহেডের সাথে গোলযোগ নেই। আপনার কাস্ট হয় সফল হয় বা আপনার পরিবর্তনশীল শূন্য থেকে আরম্ভ করা হয় এবং আপনি সেই অনুযায়ী লেনদেন করেন।
.ToString()। নেট সত্তা কিছুই সমর্থন করে না । একটি মান ধরণের, যেমন পূর্ণসংখ্যা, কিছুই হতে পারে না। সুতরাং এক্ষেত্রে সিএসটিআর (নম্বর) বা সংখ্যা। সাধারণ ক্ষেত্রে (কেবলমাত্র মান ধরণের নয়), সিএসটিআর (যাই হোক না কেন) নিরাপদ, কারণ এটি কিছুই হ্যান্ডেল করতে পারে - ফলাফলটি স্ট্রিং ভেরিয়েবলের কিছুই হবে না। ট্রাইকাস্ট খুব দরকারী - কেবল এখানে নয়।
ব্যবহারকারী কনরাড রুডল্ফ স্ট্যাক ওভারফ্লো প্রশ্ন "ভিবি.এনইটি এর লুকানো বৈশিষ্ট্যগুলি" -এ ডাইরেক্টকাস্টের () পক্ষে সমর্থন করেছেন ।
String, তাই সম্ভাবনা নেই যে ওপিতে ডাইরেক্টকাস্টের উপযুক্ত পরিস্থিতি নিয়ে আলোচনা করা হয়েছিল।
Stringএবং ToStringআমার অভিযোগ প্রযোজ্য না। আপনি সাধারণ কনভার্সন থেকে বিষয়টিকে সংকীর্ণ না করা পর্যন্ত আপনার ডিরেক্টকাস্টের পক্ষে উকিল করা উচিত নয়।
শংসাপত্র পরীক্ষা অনুযায়ী আপনার সাধারণ রূপান্তরগুলির জন্য যখনই সম্ভব কনভার্ট.টক্সএক্সএক্সএক্স () ব্যবহার করা উচিত কারণ এটি সিএক্সএক্সএক্স রূপান্তরগুলির চেয়ে পারফরম্যান্সকে আরও অনুকূল করে তোলে।
একসময় আমার মনে আছে এমএসডিএন গ্রন্থাগার রাষ্ট্রটি সিএসটিআর () ব্যবহার করার জন্য দেখেছিল কারণ এটি দ্রুত ছিল। আমি জানি না যদিও এটি সত্য কিনা।