.NET- এ 'সিএলএস কমপ্লায়েন্ট' বৈশিষ্ট্যটি কী?


উত্তর:


181

আপনি CLSCompliantএটি অন্য যে কোনও নেট নেট ভাষা ব্যবহার করতে পারবেন তা নিশ্চিত করতে চাইলে আপনি গুণাবলীর সাহায্যে ক্লাস চিহ্নিত করেন ।
এগুলি মৌলিক নিয়ম:

  1. স্বাক্ষরযুক্ত প্রকারগুলি শ্রেণীর পাবলিক ইন্টারফেসের অংশ হওয়া উচিত নয়। এর অর্থ কী পাবলিক ফিল্ডগুলিতে স্বাক্ষরযুক্ত প্রকারের মতো uintবা ulongপাবলিক পদ্ধতিতে স্বাক্ষরযুক্ত প্রকারগুলি ফিরিয়ে দেওয়া উচিত নয়, পাবলিক ফাংশনে পাস করা প্যারামিটারগুলিতে স্বাক্ষরযুক্ত প্রকারগুলি থাকা উচিত নয়। তবে স্বাক্ষরযুক্ত প্রকারগুলি ব্যক্তিগত সদস্যদের অংশ হতে পারে।

  2. পয়েন্টারগুলির মতো অনিরাপদ ধরণের publicসদস্যদের সাথে ব্যবহার করা উচিত নয় । তবে এগুলি privateসদস্যদের সাথে ব্যবহার করা যেতে পারে ।

  3. শ্রেণীর নাম এবং সদস্যের নামগুলি কেবল তাদের মামলার ভিত্তিতে পৃথক হওয়া উচিত নয়। উদাহরণস্বরূপ আমরা দুটি পদ্ধতি নামে থাকতে পারে না MyMethodএবং MYMETHOD

  4. কেবলমাত্র বৈশিষ্ট্য এবং পদ্ধতিগুলি ওভারলোড করা হতে পারে, অপারেটরগুলি ওভারলোড হওয়া উচিত নয়।


আপনি কি প্রতিটি প্রকল্পের জন্য এটি ডিফল্ট হিসাবে করবেন?
সরফরাজ

3
অগত্যা নয়, বেশিরভাগ ক্ষেত্রে তাদের অন্যান্য নেট নেট ভাষায় এক্সপোজার থাকতে পারে।
ওটিভিও ডাসিও

1
আর একটি বিধিনিষেধ CS3006: ওভারলোডেড পদ্ধতি 'Foo.Bar (রেফ বাজ)' কেবলমাত্র রেফ বা আউট বা অ্যারে র্যাঙ্কে পৃথক, সিএলএস-সম্মতিযুক্ত নয়
ড্রিউ নয়েস

আরও একটি: সর্বজনীন পরিচয়কারীদের আন্ডারস্কোর অক্ষর দিয়ে শুরু করা উচিত নয়।
ক্রোনো

44

এটি আপনার কোডের অন্যান্য ভোক্তাকে বলে যে এটি সিএলএস অনুগত , এবং সি # সংকলকটি এটি আপনার জন্য সিএলএস অনুগত কিনা তাও পরীক্ষা করে তোলে ।

রেফারেন্স করা নিবন্ধে সিএলএসের বাধ্যবাধকতা কী প্রযোজ্য সে সম্পর্কে আরও অনেক বিশদ রয়েছে।


12
সুতরাং আমি যদি বৈশিষ্ট্যটি যুক্ত করি এবং তারপরে কোনও অভিযোগ ছাড়াই আমার প্রকল্পটি তৈরি করি, তার মানে আমার প্রকল্পটি সিএলএসের অনুগত এবং সব ভাল?
Svish

@ সুইশ, হ্যাঁ এটিই কেস। আপনি যদি কোনও নিয়ম লঙ্ঘন করেন তবে সংকলক আপনাকে জানাবে।
ড্রয় নোকস

41

অন্য উত্তরগুলি সঠিক। আমাকে কিছু জিনিস স্পষ্ট করতে দাও - সিএলএস বলতে কমন ল্যাঙ্গুয়েজ স্পেসিফিকেশন বোঝায়। এটি নিয়মের সর্বনিম্ন সেট এবং প্রয়োজনীয় ভাষার বৈশিষ্ট্য যা একটি। নেট ভাষা অবশ্যই প্রয়োগ এবং বুঝতে পারে। এই সেটটি সাধারণ টাইপ সিস্টেমের একটি উপসেট , যা কীভাবে। নেট এ সংজ্ঞায়িত হয় তা নির্ধারণ করে।

সিএলএসের আনুগত্যের অর্থ হ'ল আপনি এমন কোড লিখতে পারেন যা কোনও ভাষার দ্বারা গ্রাহিত হতে পারে যা সিএলআরতে সংকলন করে চালানো যায়। তবে সিএলএস সম্মতি প্রয়োজন হয় না, যেখানে সিএলএস সম্মতি করা কঠিন বা অসম্ভব এমন ক্ষেত্রে আপনাকে নমনীয়তা দেয়।

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

যখন আপনার সমাবেশটি সিএলএসকম্পিলিয়েন্টএট্রিবিউটের সাথে চিহ্নিত করা হয়, সংকলকটি (কোড করা উচিত) আপনার কোডটি পরীক্ষা করে দেখবে যে, সংকলন করা হলে এটি কোনও সিএলএস বিধি লঙ্ঘন করবে (যার মধ্যে কয়েকটি অক্টেসিও উল্লিখিত) এবং ফিক্সিংয়ের জন্য আপনাকে লঙ্ঘনের প্রতিবেদন করবে।


এফএক্সকপ আমাকে এখানে এনেছে।
তেওমান শিপাহী 26'15

দুর্ভাগ্যক্রমে সিএলআর-এর অনেকগুলি বিচ্ছিন্ন ভাষা রয়েছে (যেমন ভিবি.এনইটি - যা ধীরে ধীরে মারা যায় - এবং অন্যরা এখন এমসি ++, ডেলফি.নেট, অক্সিজেন, জে #, জেএসক্রিপ্ট.নেট এবং আরও অনেক কিছু) সীমাবদ্ধ করে ফেলেছে সিএলএস কমপ্লায়েন্স সম্পন্ন করার সুবিধাগুলি এই যে সিএলআর সমর্থন করে অন্য বাকী ভাষাগুলিতে alচ্ছিক প্যারামিটার এবং outপ্যারামিটারের মতো নন-সিএলএসকম্প্লিয়েন্ট বৈশিষ্ট্যগুলি সমর্থন করার ক্ষেত্রে কোনও সমস্যা নেই - তাই আমার মতে মাইক্রোসফ্টকে সিএলএসের প্রয়োজনীয়তাগুলি পুনর্বিবেচনা করা এবং সম্ভবত তাদের আলগা করা দরকার।
দাই

13

সিএলএস অনুবর্তী হ'ল সিএলআর দ্বারা অনুমোদিত সম্পূর্ণ ভাষার বর্ণালীগুলির একটি উপসেট। এটি এটিকে সাবলেটগুলিতে সীমাবদ্ধ করে যেগুলি সম্ভবত সিএলআরকে লক্ষ্য করে সংখ্যাগরিষ্ঠ ভাষার দ্বারা উপলব্ধ। এটি বৃদ্ধি পায় তবে গ্যারান্টি দেয় না যে আপনার লাইব্রেরি সিএলআরকে লক্ষ্য করে সমস্ত ভাষায় ব্যবহার করা যেতে পারে।


8

যেমনটি এখানে ফিট করে: একটি সম্পূর্ণ প্রকল্প সিএলএস অনুবর্তী হিসাবে চিহ্নিত করতে এই লাইনটি যুক্ত করুন AssemblyInfo.cs(সমাধান এক্সপ্লোরারে প্রোপার্টি-এর অধীনে পাওয়া যাবে)

[assembly:CLSCompliant(true)]

বা সমানভাবে ভিবি.এনইটিতে ( AssemblyInfo.vbআমার প্রকল্পের আওতায় লুকানো)

<Assembly: CLSCompliant(True)>

আপনার কোড সিএলএস অনুবর্তী করার জন্য ধন্যবাদ ।

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