'সুরক্ষিত' এবং 'সুরক্ষিত অভ্যন্তরীণ' এর মধ্যে পার্থক্য কী?


244

কেউ দয়া করে আমাকে সি # তে 'সুরক্ষিত' এবং 'সুরক্ষিত অভ্যন্তরীণ' সংশোধকগুলির মধ্যে পার্থক্যটি বিস্তারিতভাবে বর্ণনা করতে পারেন? দেখে মনে হচ্ছে তারা একইরকম আচরণ করে।

উত্তর:


402

"সুরক্ষিত অভ্যন্তরীণ" অ্যাক্সেস সংশোধক একটি ইউনিয়ন উভয় "সুরক্ষিত" এবং "অভ্যন্তরীণ" সংশোধনকারীদের।

এমএসডিএন থেকে , অ্যাক্সেস মোডিফায়ার্স (সি # প্রোগ্রামিং গাইড) :

সুরক্ষিত :

প্রকার বা সদস্য কেবলমাত্র একই শ্রেণি বা কাঠামোর কোড দ্বারা বা সেই শ্রেণি থেকে প্রাপ্ত ক্লাসে অ্যাক্সেস করা যায়।

অভ্যন্তরীণ :

প্রকার বা সদস্য একই অ্যাসেমব্লির যে কোনও কোড দ্বারা অ্যাক্সেস করা যেতে পারে, তবে অন্য সমাবেশ থেকে নয়।

অভ্যন্তরীণ সুরক্ষিত :

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

দ্রষ্টব্য : protected internalঅর্থ " protectedওআর "internal " (একই বিধানসভায় যে কোনও শ্রেণি বা কোনও উদ্ভূত শ্রেণি - এমনকি এটি ভিন্ন ভিন্ন সমাবেশে থাকলেও)।

... এবং সম্পূর্ণতার জন্য:

ব্যক্তিগত :

প্রকার বা সদস্য কেবলমাত্র একই শ্রেণি বা কাঠামোর কোড দ্বারা অ্যাক্সেস করা যায়।

জনসাধারণ :

প্রকার বা সদস্য একই সমাবেশ বা অন্য কোনও সমাবেশে উল্লেখ করা অন্য যে কোনও কোড দ্বারা অ্যাক্সেস করতে পারে।

ব্যক্তিগত সুরক্ষিত :

অ্যাক্সেসটি বর্তমান অ্যাসেমব্লির মধ্যে থাকা ক্লাস থেকে প্রাপ্ত শ্রেণি বা প্রকারের মধ্যে সীমাবদ্ধ।
( সি # 7.2 সাল থেকে উপলব্ধ )


2
আমার কি এমন সদস্য থাকতে পারে protected internalযাতে এটি protectedবর্তমান সমাবেশে এবং বাহ্যিকভাবে সম্পূর্ণভাবে অনুপলব্ধ?
শিমি ওয়েটজ্যান্ডলার

8
এটি "সুরক্ষিত" হবে, তাই না?
সিএডি

2
@ শিম্মি: আপনার সুরক্ষিত পদ্ধতি সহ একটি অভ্যন্তরীণ ক্লাস থাকতে পারে । তবে তখন পুরো ক্লাসটি বাহ্যিক সমাবেশ থেকে অনুপলব্ধ হবে।
এম

1
@Shimmy দেখে এই প্রস্তাব সি # এর ভবিষ্যতে সংস্করণের জন্য নেওয়া github.com/dotnet/roslyn/blob/features/privateProtected/docs/...
Nate কুক

@ শিহমি কমপক্ষে সিএলআর সুরক্ষিত এবং অভ্যন্তরীণ অ্যাক্সেসযোগ্যতার ছেদ করার ধারণাকে সমর্থন করে, তবে সি # ভাষা এটি করে না। সি # দুটি অ্যাক্সেস সংশোধকগুলির কেবলমাত্র ইউনিয়নকে সমর্থন করে।
আরবিটি

89

protected যে কোনও সমাবেশ থেকে যে কোনও উপশ্রেণী ব্যবহার করতে পারে।

protected internal যে সবকিছু protected কিছুই, তেমনি একই সমাবেশের যে কোনও কিছু এটি অ্যাক্সেস করতে পারে।

গুরুত্বপূর্ণভাবে, এর অর্থ এটি "একই সমাবেশে সাবক্লাস" নয় - এটি উভয়ের মিলন, ছেদটি নয়।


3
পাঠকদের জন্য কেবল একটি এফওয়াইআই যে সিএলআর সুরক্ষিত এবং অভ্যন্তরীণ অ্যাক্সেসযোগ্যতার ছেদ করার ধারণাকে সমর্থন করে তবে সি # এটি সমর্থন করে না। সি # এই পোস্টে উল্লিখিত হিসাবে কেবল দুটিরই ইউনিয়নকে সমর্থন করে।
আরবিটি

1
পাঠকদের জন্য আরও একটি এফওয়াইআই, "একই সমাবেশে সাবক্লাস" private protectedঅ্যাক্সেস মডিফায়ার দিয়ে অর্জন করা যেতে পারে যা সি # 7.2 তে চালু হয়েছিল
লর্ডউইলমোর

52

- আপডেট উত্তর 2019 -

আপনি নীচের টেবিল ভিত্তিক অ্যাক্সেসযোগ্যতার মধ্যে পার্থক্যটি হ্যাঁ,

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


4
সুন্দর উত্তর, এটি প্রতিটি অ্যাক্সেস মডিফায়ারের মধ্যে পার্থক্যটি খুব স্পষ্টভাবে যোগাযোগ করে।
e_i_pi

23

অনুশীলনে, পদ্ধতি সম্পর্কে:

সুরক্ষিত - উত্তরাধিকারসূত্রে প্রাপ্ত ক্লাসগুলির জন্য অ্যাক্সেসযোগ্য, অন্যথায় ব্যক্তিগত।

অভ্যন্তরীণ - কেবল সমাবেশের ভিতরে ক্লাসের জন্য সর্বজনীন, অন্যথায় ব্যক্তিগত।

সুরক্ষিত অভ্যন্তরীণ - অর্থ সুরক্ষিত বা অভ্যন্তরীণ - উত্তরাধিকারসূত্রে প্রাপ্ত শ্রেণি এবং সমাবেশের অভ্যন্তরের যে কোনও শ্রেণির জন্য পদ্ধতিগুলি অ্যাক্সেসযোগ্য ।


1
আমি ওআরটিকে কারণটি প্রকাশ করতে ব্যবহার করব এটি উভয়ই সত্য নয়।
ব্রায়ান রাসমুসেন

"সুরক্ষিত" এর বর্ণনায় "বেস শ্রেণীর আচরণ পরিবর্তনের জন্য" অংশটির সাথে আমি পুরোপুরি একমত নই। আমি বলব এটি এখানে আপনি "ভার্চুয়াল" (বেস শ্রেণিতে) এবং "ওভাররাইড" (উত্পন্ন শ্রেণিতে) ব্যবহার করবেন।
এম

সেখানে একটি উপায় হিসেবে সদস্য চিহ্নিত করতে হয় protectedএবং internal?
শিমি ওয়েটজ্যান্ডলার

@ শিমি: হ্যাঁ protected internal,।
abatishchev

1
@ শিমি দুই বছর পরে, এবং হ্যাঁ। এখন সি # 7.2 এ একটি উপায় রয়েছে। তার নামক private protected docs.microsoft.com/en-us/dotnet/csharp/language-reference/...
পাউলি Østerø

10

"সুরক্ষিত অভ্যন্তরীণ" অ্যাকসেসরগুলির সুযোগ বুঝতে এখনও অনেক বিভ্রান্তি রয়েছে, যদিও বেশিরভাগের সংজ্ঞাটি সঠিকভাবে সংজ্ঞায়িত করা হয়েছে। এটি "সুরক্ষিত" এবং "সুরক্ষিত অভ্যন্তরীণ" এর মধ্যে বিভ্রান্তি বুঝতে আমাকে সহায়তা করেছে:

জনসমাগমের ভিতরে এবং বাইরে সত্যই জনসাধারণ ( জনসাধারণের অভ্যন্তরীণ / জনসাধারণের বাহ্যিক )

সুরক্ষিত সত্যই সমাবেশের ভিতরে এবং বাইরে সুরক্ষিত ( আভ্যন্তরীণ / সুরক্ষিত বাহ্যিক সুরক্ষিত ) (শীর্ষ স্তরের শ্রেণিতে অনুমোদিত নয়)

প্রাইভেট হ'ল সমাবেশের ভিতরে এবং বাইরে ব্যক্তিগত ( ব্যক্তিগত অভ্যন্তরীণ / বেসরকারী বাহ্যিক ) (শীর্ষ স্তরের শ্রেণিতে অনুমোদিত নয়)

অভ্যন্তরীণটি সমাবেশের অভ্যন্তরে সত্যই প্রকাশ্য তবে বিধানসভার বাইরে যেমন ব্যক্তিগত ( জনসাধারণের অভ্যন্তরীণ / বহিরাগত বহিরাগত ) বাদ থাকে

সুরক্ষিত অভ্যন্তরটি সত্যই সমাবেশের অভ্যন্তরে প্রকাশ্য তবে সমাবেশের বাইরে সুরক্ষিত ( জনসাধারণের অভ্যন্তরীণ / সুরক্ষিত বাহ্যিক ) (শীর্ষ স্তরের শ্রেণিতে অনুমোদিত নয়)

আপনি দেখতে পাচ্ছেন সুরক্ষিত অভ্যন্তরীণ একটি খুব অদ্ভুত জন্তু। স্বজ্ঞাত নয়।

এটি এখন প্রশ্ন তোলে যে মাইক্রোসফ্ট কেন ( সুরক্ষিত অভ্যন্তরীণ / বহিরাগত বহিরাগত ) তৈরি করল না , বা আমি কোনও ধরণের "ব্যক্তিগত সুরক্ষিত" বা "অভ্যন্তরীণ সুরক্ষিত" অনুমান করি? হাঃ হাঃ হাঃ. অসম্পূর্ণ বলে মনে হচ্ছে?

বিভ্রান্তিতে যুক্ত হ'ল আপনি পাবলিক বা সুরক্ষিত অভ্যন্তরীণ নেস্টেড সদস্যদের ভিতরে সুরক্ষিত, অভ্যন্তরীণ বা ব্যক্তিগত ধরণের বাসা বাঁধতে পারেন। কেন আপনি অভ্যন্তরীণ শ্রেণীর অভ্যন্তরীণ শ্রেণীর অভ্যন্তরীণ "সুরক্ষিত অভ্যন্তরীণ" অ্যাক্সেস করবেন যা সমাবেশের অ্যাক্সেসের বাইরে রাখে?

মাইক্রোসফ্ট বলেছে যে এই ধরণের নেস্টেড প্রকারগুলি তাদের পিতামাতার ধরণের স্কোপ দ্বারা সীমাবদ্ধ তবে সংকলক যা বলে তা তাই নয়। আপনি অভ্যন্তরীণ ক্লাসের ভিতরে সুরক্ষিত ইন্টার্নালগুলি সংকলন করতে পারেন যা কেবল সমাবেশের মধ্যে সীমাবদ্ধ রাখে।

আমার কাছে এটি অসম্পূর্ণ নকশার মতো অনুভব করে। তাদের এমন একটি সিস্টেমে সমস্ত ধরণের সহজতর সুযোগ থাকা উচিত যা স্পষ্টভাবে উত্তরাধিকার বিবেচনা করে তবে সুরক্ষিত এবং নেস্টেড ধরণের শ্রেণিবিন্যাসও। এটি অসম্পূর্ণ স্কোপিং সিস্টেমের ভিত্তিতে প্রকার এবং সদস্যদের অ্যাক্সেসযোগ্যতা আবিষ্কার করার চেয়ে বস্তুর ভাগ করে নেওয়া অত্যন্ত স্বজ্ঞাত এবং দানাদার করে তুলেছিল।


1
ব্যক্তিগত সুরক্ষিত এখন সি # 7.2 এ যুক্ত করা হয়েছে যা মূলত অভ্যন্তরীণ এবং সুরক্ষিত।
পাওলি Østerø

7

সুরক্ষিত : পরিবর্তনশীল বা পদ্ধতিটি কেবলমাত্র শিশু শ্রেণিতে (যে কোনও সমাবেশে) উপলব্ধ থাকবে

অভ্যন্তরীণ সংরক্ষিত কোনো সমাবেশ শিশু ক্লাস উপলব্ধ: এবং একই সমাবেশ মধ্যে ক্লাস সবাইকে


3

আমি এই শর্তগুলির জন্য খুব স্পষ্ট সংজ্ঞা পড়েছি।

সুরক্ষিত: শ্রেণি সংজ্ঞা এবং শ্রেণি থেকে উত্তরাধিকারসূত্রে প্রাপ্ত যে কোনও শ্রেণির মধ্যে অ্যাক্সেস সীমাবদ্ধ। ধরণ বা সদস্যটি কেবল একই শ্রেণি বা কাঠামোয় বা সেই শ্রেণি থেকে প্রাপ্ত ক্লাসে কোড দ্বারা অ্যাক্সেস করা যায়।

অভ্যন্তরীণ: অ্যাক্সেস কেবলমাত্র বর্তমান প্রকল্প সমাবেশের মধ্যে সংজ্ঞায়িত শ্রেণিতে সীমাবদ্ধ। প্রকার বা সদস্য কেবলমাত্র একই শ্রেণীর কোড দ্বারা অ্যাক্সেস করা যায়।

সুরক্ষিত-অভ্যন্তরীণ: অ্যাক্সেস কেবল বর্তমান সমাবেশ বা শ্রেণিযুক্ত শ্রেণীর থেকে প্রাপ্ত প্রকারের মধ্যে সীমাবদ্ধ।


1

সুরক্ষিত সদস্য

কেবলমাত্র অন্তর্ভুক্ত শ্রেণিতে (যেখানে এটি ঘোষণা করা হয়েছে) এবং বিধানসভার অভ্যন্তরে এবং বিধানসভার বাইরেও উত্পন্ন শ্রেণিতে কোনও শ্রেণীর সুরক্ষিত সদস্য।

এর অর্থ যদি কোনও শ্রেণি যা সমাবেশের বাইরে থাকে তারা কেবল অন্য শ্রেণীর সদস্যদের কেবল সেই শ্রেণীর উত্তরাধিকার সূত্রে ব্যবহার করতে পারে।

আমরা সেই শ্রেণীর উত্তরাধিকার সূত্রে সমাবেশের বাইরে সুরক্ষিত সদস্যকে উন্মুক্ত করতে পারি এবং এটি কেবল উত্পন্ন শ্রেণিতেই ব্যবহার করতে পারি।

দ্রষ্টব্য: সুরক্ষিত সদস্যগণ উদ্ভূত শ্রেণিতে অবজেক্টটি ব্যবহার করে অ্যাক্সেসযোগ্য নয়।

অভ্যন্তরীণ সদস্য

কোনও শ্রেণির অভ্যন্তরীণ সদস্য প্রবিধান তৈরি করে বা উদ্ভূত শ্রেণিতে সমাবেশের মধ্যে অ্যাক্সেস পাওয়া যায় বা আপনি বলতে পারেন যে এটি বিধানসভার সমস্ত শ্রেণীর মধ্যে অ্যাক্সেসযোগ্য।

দ্রষ্টব্য: অভ্যন্তরীণ সদস্যরা হয় বস্তু তৈরির মাধ্যমে বা কোনও উত্পন্ন শ্রেণিতে সমাবেশের বাইরে অ্যাক্সেসযোগ্য নয়।

অভ্যন্তরীণ সুরক্ষিত

সুরক্ষিত অভ্যন্তরীণ প্রবেশাধিকার সংশোধক হ'ল সুরক্ষিত বা অভ্যন্তরীণ সমন্বয় combination

সুরক্ষিত অভ্যন্তরীণ সদস্য পুরো সমাবেশের মধ্যেই এটি উপলব্ধ হতে পারে যেখানে এটি বস্তু তৈরির ঘোষণা করেছিল বা উত্তরাধিকারসূত্রে class শ্রেণীর দ্বারা। এবং শুধুমাত্র একটি উদ্ভূত শ্রেণিতে সমাবেশের বাইরে প্রবেশযোগ্য হতে পারে।

দ্রষ্টব্য: সুরক্ষিত অভ্যন্তরীণ সদস্য একই সমাবেশের অভ্যন্তরীণ হিসাবে কাজ করে এবং সমাবেশের বাইরে রক্ষিত হিসাবে কাজ করে।


1

সর্বজনীন - জনসাধারণ হিসাবে ঘোষিত সদস্য (ফাংশন এবং ভেরিয়েবলস) যে কোনও জায়গা থেকে অ্যাক্সেস করা যেতে পারে।

প্রাইভেট - প্রাইভেট সদস্যদের শ্রেণীর বাইরে থেকে অ্যাক্সেস করা যায় না। এটি কোনও সদস্যের জন্য ডিফল্ট অ্যাক্সেস স্পেসিফায়ার, অর্থাৎ আপনি যদি কোনও সদস্যের জন্য কোনও অ্যাক্সেস স্পেসিফায়ার (পরিবর্তনশীল বা ফাংশন) নির্দিষ্ট না করেন তবে এটি ব্যক্তিগত হিসাবে বিবেচিত হবে। সুতরাং, স্ট্রিং ফোন নাম্বার; বেসরকারী স্ট্রিং ফোন নম্বর এর সমতুল্য।

সুরক্ষিত - সুরক্ষিত সদস্যদের কেবল শিশু ক্লাস থেকে অ্যাক্সেস করা যায়।

অভ্যন্তরীণ - এটি কেবল একই সমাবেশের মধ্যেই অ্যাক্সেস করা যায়।

সুরক্ষিত অভ্যন্তরীণ - এটি একই সমাবেশের পাশাপাশি উত্পন্ন শ্রেণিতেও অ্যাক্সেস করা যায়।


0

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

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