স্ট্রিং অবজেক্টকে বরাদ্দ করার সময় কেন স্ট্রিং ব্যবহার করুন mp


14

আমি আমার কোডের উপর স্টাইলকপ চালিয়ে যাচ্ছি এবং SA1122 এর একটি প্রস্তাবনা স্ট্রিং ব্যবহার করা উচিত a

আমার প্রশ্নটি কেন এটি সেরা অনুশীলন হিসাবে বিবেচিত হয়। অথবা, এটি কি সেরা অনুশীলন হিসাবে বিবেচিত হয়? আমি ধরে নিই যে দুটি বিবৃতিতে কোনও সংকলক পার্থক্য নেই তাই আমি কেবল ভাবতে পারি যে এটি পাঠযোগ্যতার জিনিস?

সুতরাং প্রশ্নোত্তর

জনের স্কিটি প্রশ্নের উত্তর


5
আমি নিশ্চিত এটি স্ট্যাক ওভারফ্লোতে জিজ্ঞাসা করা হয়েছিল এবং উত্তর দেওয়া হয়েছিল - তবে এটি খুঁজে পেতে আমার সমস্যা হচ্ছে। এটি এটির জন্য যে এটির জন্য একটি নতুন স্ট্রিং অবজেক্ট ইনস্ট্যান্ট করতে হবে ""তবে তা নয়string.Empty
ক্রিসএফ

@ ক্রিসফ এএফ, এই ধরণের প্রশ্নের জন্য স্ট্যাক ওভারফ্লো দেখার জন্য ভাবেননি। আমার একটা গ্যান্ডার হবে
dreza

1
: Stackoverflow উপর প্রশ্নই DUP stackoverflow.com/questions/151472/...
Quentin-starin

@ ক্রিসএফ - এটি এসও এর কাছে জিজ্ঞাসা করা হয়েছে। ওভার এবং উপর এবং উপর ...
ওবেদের

1
এখানে আমরা যান - stackoverflow.com/questions/151472/... সেপ্টেম্বর 2008 থেকে ফিরে -
ChrisF

উত্তর:


12

এক বৈধ কারণ এটা পরিষ্কার এই একটি ত্রুটি লক্ষ্য বা স্থানধারক নয় যে, আপনি হয় সত্যিই এখানে খালি স্ট্রিং ব্যবহার করতে বোঝানো।

আমি এটি "সেরা অনুশীলন" হিসাবে বিবেচনা করি কিনা জানি না।


7

আমি ভাবতে পারি যে এর দুটি কারণ রয়েছে, একটি পঠনযোগ্যতার জন্য, এবং দুটি অপ্রতুল পারফরম্যান্স বৃদ্ধির জন্য।

পঠনযোগ্যতা সহজ: এটির string.Emptyচেয়ে এটি আরও দ্রুত ""। খুঁজছেন string.Emptyএটাও সহজ এবং হয়তো আক্ষরিক খুঁজছেন চেয়ে আরও নির্ভুল হতে যাচ্ছে। এটি উদ্দেশ্যটিও স্পষ্ট করে: আপনি কেবল একটি টাইপ তৈরি করেননি বা কোনও কিছু শেষ করতে ভুলে যাননি, আপনি সত্যিকার অর্থে খালি স্ট্রিং চেয়েছিলেন।

পারফরম্যান্স কারণ ইন্টার্নিং কারণে । আপনি দেখুন, রানটাইম আগের ব্যবহৃত স্ট্রিংগুলির একটি টেবিল রাখে যাতে এটি আসলে একটি অক্ষর দ্বারা অক্ষর পরীক্ষা না করে দ্রুত স্ট্রিং তুলনা করতে পারে। string.Emptyইতিমধ্যে ""যেখানে অভ্যন্তরীন রেফারেন্স হিসাবে আক্ষরিক টাইপিং আপনাকে অভ্যন্তরীণ সংস্করণটি না দেয়, ফলে সামান্য পারফরম্যান্স হিট হয়ে যায়।


7
একটি নীটপিক, আক্ষরিক "" টাইপ করা আপনাকে সর্বদা "" এর একই অভ্যন্তরীণ সংস্করণ দেয়, কমপক্ষে। নেট 2 এবং তারপরে।
কোয়ান্টিন-স্টারিন

ঠিক আছে, এমএসডিএন-এ ইন্টার্নিং নিবন্ধটি এই বিষয়টিকে অনুসরণ করা কিছুটা শক্ত। এটি "" এবং স্ট্রিংয়ের মতো বলে মনে হচ্ছে mpEmpty উভয়ের একই ইন্টার্নযুক্ত স্ট্রিংয়ের পয়েন্ট হওয়া উচিত তবে এটি নেট রানটাইম সংস্করণগুলির মধ্যে কিছু পার্থক্য নির্দেশ করে বলে মনে হচ্ছে। আমি মনে করি যে কোনও স্ট্রিং আক্ষরিক যা কোডে একাধিকবার প্রদর্শিত হয় তা দ্বিতীয় এবং আরও ব্যবহারের সাথে ইন্টার্ন করা হবে, হ্যাঁ?
কোডেক্সআর্কানিয়াম

4
এছাড়াও আমি জোর দেওয়া উচিত যখন আমি সামান্য বলি, আমি অতি ক্ষুদ্র মানে। "পারফরম্যান্সের কারণে" একটি প্রতিনিধিত্ব থেকে অন্যটিতে সরে যাওয়ার কোনও কারণ নয়, রানটাইম সম্পর্কে জানার পক্ষে এটি একটি ঝরঝরে জিনিস।
কোডেক্সআর্কানিয়াম

4
এটিও লক্ষ করা উচিত যে পারফরম্যান্স দিকটি শুধুমাত্র সংকলনের জন্য সত্য। যেহেতু উভয়ই একই আইএল-তে সংকলন করে, রানটাইম পারফরম্যান্সটি অভিন্ন হওয়া উচিত।
lzcd

পারফরম্যান্সের উত্সাহটি কেবল সংকলনে হবে
রাচেট ফ্রিক

4

string.Empty সত্যিকারের কোণার ক্ষেত্রে জিততে পারে, যা কিছু জাদুকরী বাগ বাড়াতে পারে এবং ডিবাগ করা সত্যিই কঠিন:

যদি একটি শূন্য প্রস্থের স্থান থাকে ""


0

আমি পাওয়া কিছু ডকুমেন্টেশন অনুসারে, এটি সংকলক দ্বারা নির্গত যা আছে তার সাথে সম্পর্কযুক্ত।

একটি দ্রুত অনুসন্ধান প্রকাশ করে: http://stylecop.soyuz5.com/SA1122.html

কেন সেই বিবরণ সহ "পঠনযোগ্যতা বিধিগুলি" এর অধীনে এটি দায়ের করা বিস্মিত।

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