পরিকল্পিত "ব্যক্তিগত সুরক্ষিত" সি # অ্যাক্সেস সংশোধকটির অর্থ কী?


133

গিটহাবের রোজলিন ডকুমেন্টেশনের অংশ হিসাবে , সি # এবং ভিবি এর জন্য পরিকল্পনামূলক ভাষা বৈশিষ্ট্য সহ ভাষা বৈশিষ্ট্য প্রয়োগের স্থিতি নামে একটি পৃষ্ঠা রয়েছে।

একটি বৈশিষ্ট্য যা আমি আমার মাথাটি চারপাশে গুটিয়ে রাখতে পারি না সেটি ছিল private protectedঅ্যাক্সেস মডিফায়ার:

private protected string GetId() {  } 

এছাড়া একটি পৃষ্ঠায় হয় C # এর ভাষা ডিজাইন নোট , যা অনেক নতুন বৈশিষ্ট্য ব্যাখ্যা করে এই এক, কিন্তু না।

এরিক লিপার্ট একটি মন্তব্যে বলেছেন :

আপনার ত্রুটিটি সংশোধনকারীদের বর্ধিত সীমাবদ্ধতা হিসাবে ভাবছে thinking পরিবর্তনকারীরা সর্বদা সীমাবদ্ধতা হ্রাস করে। মনে রাখবেন, ডিফল্টরূপে জিনিসগুলি "ব্যক্তিগত" হয়; শুধুমাত্র সংশোধক যুক্ত করে আপনি কি তাদের কম সীমাবদ্ধ করেন।

এর অর্থ কী private protected? আমি কখন এটি ব্যবহার করতে পারি?


2
দ্রষ্টব্য যে ভিবি ভাষা ডিজাইন নোটগুলির আওতায় এ সম্পর্কিত তথ্য রয়েছে ।
জেসি গুড

3
এটি মেথডএট্রিবিউটস.ফ্যামআন্ডসেমের ম্যাপিং। সি # এর অভ্যন্তরীণ একটি অদ্ভুত ম্যাপিং রয়েছে , এটি ব্যবহার করে (ব্যক্তিগত | FamANDAssem)। এবং অভ্যন্তরীণ সুরক্ষিত মানচিত্রগুলিতে (ব্যক্তিগত | পরিবার) সিএলআর বৈশিষ্ট্যগুলি অদ্ভুত।
হ্যানস প্যাস্যান্ট

22
এই প্রস্তাবিত বৈশিষ্ট্যটি আমার মন্তব্যকে ভুল করে তুলবে।
এরিক লিপার্ট

সি # ডিজাইন টিম এই বৈশিষ্ট্যের জন্য প্রস্তাবিত বিকল্প বাক্য গঠন সহ একটি সমীক্ষা প্রকাশ করেছে । এর মধ্যে কিছু আকর্ষণীয়, মত protected & internal, assembly protectedবা proternal(আমি আশা করি এর মধ্যে কিছু ঢামালি হয়)। রয়েছে আলোচনা থ্রেড কিছু চমৎকার অর্ন্তদৃষ্টি সঙ্গে।
কোবি

1
বৈশিষ্ট্যটি এখন ভাষা ফিচার বাস্তবায়নের স্থিতিতে প্রত্যাহারযোগ্য হিসাবে চিহ্নিত হয়েছে! ব্যক্তিগতভাবে আমি এই অ্যাক্সেস স্তরের ধারণা পছন্দ করি এবং আমি এটি একটি দরকারী বৈশিষ্ট্য বলে মনে করি। আমি ক্লাস ডিজাইন অনুযায়ী আমার কোড রাখতে সুরক্ষিতটি ব্যবহার করতে চাই, তবে আমি চাই না যে অন্যরা এই সদস্যদের অ্যাক্সেস পেতে হ্যাকি সাবগ্লাস লিখুক। IMO সবচেয়ে ভাল সমাধান হ'ল যদি আমরা লিখতে পারি protected | internalএবংprotected & internal
ফেলিক্স কেয়েল

উত্তর:


98

ডি বিল ইভজেন এবং জে গ্লিনের " পেশাদার সি # ২০০৮ " অনুসারে, পৃষ্ঠা 1699:

ব্যক্তিগত সুরক্ষিত - "কেবলমাত্র বর্তমান সমাবেশের মধ্যে উত্পন্ন ধরণের"

সি ++ / সিএলআই এর অনুরূপ বৈশিষ্ট্য রয়েছে - ক্লাস এবং স্ট্রাক্টস সংজ্ঞায়িত এবং গ্রাহক (সি ++ / সিএলআই)> সদস্যের দৃশ্যমানতা :

private protected-অর- protected private- সদস্য সমাবেশের অভ্যন্তরে সুরক্ষিত তবে সমাবেশের বাইরে ব্যক্তিগত।


72
সুতরাং এটি "সুরক্ষিত হচ্ছে এবং পরিবর্তে অভ্যন্তরীণ" "সুরক্ষিত বা অভ্যন্তরীণ"?
ব্যবহারকারী541686

2
এখন কি এমন সদস্যের পক্ষে উপস্থিত হতে পারবেন যা উদ্ভূত শ্রেণীর কাছে অ্যাক্সেসযোগ্য এবং মেম্বারকে internalঅ্যাসেম্বলির সমস্ত কিছুর সংস্পর্শে না নিয়েই কোনও ধরণের জিনিস গ্রহণ বা ফেরত দেওয়া সম্ভব?
সুপারক্যাট

ধন্যবাদ! আমি সে সম্পর্কে ভেবে দেখিনি। আমার আসলে এমন কেস রয়েছে যেগুলি আমি সেই সংশোধকটি ব্যবহার করতে পারি এবং পিছনে পড়ে যাই internal
কোবি

3
এই প্রস্তাব / বৈশিষ্ট্যটির অস্তিত্ব মনে হয় যে internalদৃশ্যমানতা (শ্রেণি সংজ্ঞায়িত যেখানে সম্পর্কিত) সত্যই public/ protected/ privateদৃশ্যমানতার সাথে সংলগ্ন (উত্তরাধিকারের সাথে সম্পর্কিত) এবং সম্ভবত, internalতার নিজস্ব পরিবর্তনকারী public/ protected/ থেকে পৃথক হওয়া উচিত private
jpmc26

1
@jww - আমি জাভার সাথে খুব বেশি পরিচিত নই, তবে জাভাতে আমি যতটা জানি packageসি # তে নেমস্পেসের মতো।
গোগুটজ

187

এখানে ভেন ডায়াগ্রামের সমস্ত অ্যাক্সেস মডিফায়ার রয়েছে, আরও সীমাবদ্ধ থেকে আরও প্রতারণাপূর্ণ:

private:
এখানে চিত্র বর্ণনা লিখুন

private protected: - সি # 7.2 এ যুক্ত হয়েছে
এখানে চিত্র বর্ণনা লিখুন

internal:
এখানে চিত্র বর্ণনা লিখুন

protected:
এখানে চিত্র বর্ণনা লিখুন

protected internal:
এখানে চিত্র বর্ণনা লিখুন

public:
এখানে চিত্র বর্ণনা লিখুন


3
উত্স চিত্র: অ্যাক্সেস Modifiers.pdn । আমি পেন্ট ডট নেট নামে উপযুক্ত ব্যবহার করেছি ।
কোবি

9
এই চিত্রগুলি আমার সমস্ত (সি #) জীবন কোথায় ছিল? তারা দুর্দান্ত - আপনাকে ধন্যবাদ!
জন পিটারসন

28

এটি কেবলমাত্র একটি অ্যাক্সেসযোগ্যতার স্তরের ( http://ashitani.jp/gv/ দিয়ে তৈরি ) একটি গ্রাফ সরবরাহ করতে (চিত্রগুলিতে মন্তব্যে মাপসই হয় না)।

সি # অ্যাক্সেস স্তরের ডিগ্রাফ ডায়াগ্রাম

প্রতিটি তীর অর্থ "এর চেয়ে বেশি সীমাবদ্ধ"।

CLR নাম Private, FamilyANDAssembly, Assembly, Family, FamilyORAssembly, Public


অনেক পরে সম্পাদনা করুন: এটি দুর্দান্ত এই অ্যাক্সেস স্তরটি (সত্যই খারাপ নাম সহ) অবশেষে সি # 6.0 এ অন্তর্ভুক্ত ছিল না । এটি কেবলমাত্র সি # 7.2 (এবং আমি আপনাকে আপনার প্রশ্ন "ট্যাগগুলি" আপডেট হতে দেখেছি) সমর্থন করে।


এটি কেবল আমারই হতে পারে তবে তীরগুলি 'দিক থেকে কম সীমাবদ্ধ' দিকে চলেছে বলে মনে হচ্ছে।
আকরলন

4
@ অ্যাকারলন হ্যাঁ, সুতরাং চিত্রটির a → bঅর্থ " aতুলনায় অনেক বেশি বিধিনিষেধযুক্ত b", সুতরাং আপনি তীরটিকে "পড়ার" হিসাবে "আরও বাধাবদ্ধ " করতে পারেন "(এটি আমি ব্যাখ্যা করার চেষ্টা করেছি), সুতরাং তীরটি কমপক্ষে প্রতিবন্ধী হিসাবে চিহ্নিত করে" অভিমুখ". তীরগুলির বিপরীত সম্মেলনটি ঠিক তত ভালই হতে পারত, তবে আমাকে একটি কনভেনশন বেছে নিতে হয়েছিল।
জেপ্প স্টিগ নীলসন

10

এটি কেবল অনুমান, তবে একটি নাম থেকে আপনি সম্ভবত এটি অনুমান করতে পারেন যে এটি একটি আরও সীমাবদ্ধ সংস্করণ protected, (বা privateআপনি চাইলে আরও স্বচ্ছন্দ সংস্করণ )। এবং এর কেবল যুক্তিসঙ্গত বৈকল্পিক হ'ল protectedসমাবেশে আচরণকে সীমাবদ্ধ করা।

সম্ভাব্য ব্যবহার: তারপরে আপনি protectedঅভ্যন্তরীণ প্রয়োগের জন্য থাকতে চান , তবে বাহ্যিক ব্যবহারের জন্য নয় (এবং আপনি ক্লাসটি সিলিং করতে চান না)।

পিএস এটি সর্বদা সিএলআর তে থাকে তবে সি # তে থাকে না । এটি protected এবং internal , উদ্ধৃতিটির সংমিশ্রণ :

সিএলআর "পরিবার এবং সমাবেশ" অ্যাক্সেস প্রকারকেও সমর্থন করে। এর অর্থ হ'ল পদ্ধতিটি ঘোষক প্রকারের মধ্যে, নেস্টেড এবং ডাইরেক্টেড প্রকারের মধ্যে থেকে অ্যাক্সেসযোগ্য তবে কেবল যদি সেগুলি একই সমাবেশে ঘোষণা করা হয়। ঠিক আছে, দৃশ্যত সি # টিম এটিকে খুব দরকারী বৈশিষ্ট্য হিসাবে ভাবেনি তাই এটি এই ভাষায় সমর্থিত নয়।


সিএলআর মন্তব্যের জন্য +1 - আমি সি # তে খুব বেশি সময় এবং অন্যটিতে খুব কম সময় ব্যয় করি these
brichins

@ ড্যারেলহফম্যান লক্ষ করার জন্য ধন্যবাদ! আমি এখানে আমার চিন্তাভাবনাগুলি কিছুটা মিশিয়ে দিয়েছি)
পেটর আব্দুলিন

5

"একই হতে পারে" কেবল কেবল উপন্যাসের জন্য একই সমাবেশে দৃশ্যমান visible এটি এর চেয়ে কিছুটা সীমাবদ্ধ করে তোলে protected


1

"ব্যক্তিগত সুরক্ষিত" বৈশিষ্ট্যটির জন্য বিশেষটি দেখুন :

ব্যক্তিগত সুরক্ষিতটির স্বজ্ঞাত অর্থ হ'ল "এই অ্যাসেমব্লির মধ্যে অন্তর্ভুক্ত শ্রেণীর দ্বারা প্রাপ্ত প্রকারের মাধ্যমে অ্যাক্সেসযোগ্য"।

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