উত্তর:
finalশব্দ জাভা বিভিন্ন ব্যবহারগুলির হয়েছে। এটি সি # তে কীওয়ার্ড sealedএবং readonlyকীওয়ার্ড উভয়ের সাথেই মিল রয়েছে, এটি যে প্রসঙ্গে ব্যবহৃত হয়েছে তার উপর নির্ভর করে।
সাবক্লাসিং (সংজ্ঞায়িত শ্রেণীর উত্তরাধিকার) প্রতিরোধ করতে:
জাভা
public final class MyFinalClass {...}
সি শার্প
public sealed class MyFinalClass {...}
কোনও virtualপদ্ধতির ওভাররাইডিং প্রতিরোধ করুন ।
জাভা
public class MyClass
{
public final void myFinalMethod() {...}
}
সি শার্প
public class MyClass : MyBaseClass
{
public sealed override void MyFinalMethod() {...}
}
জোয়াচিম সাউর যেমন উল্লেখ করেছেন, এখানে দুটি ভাষার মধ্যে একটি উল্লেখযোগ্য পার্থক্য হ'ল জাভা ডিফল্টরূপে সমস্ত অ স্থির পদ্ধতি virtualচিহ্নিত করে, যেখানে সি # এগুলিকে চিহ্নিত করে sealed। অতএব, আপনি কেবল sealedসি # তে কীওয়ার্ডটি ব্যবহার করতে হবে যদি আপনি virtualবেস শ্রেণিতে স্পষ্টভাবে চিহ্নিত করা একটি পদ্ধতির আরও ওভাররাইডিং বন্ধ করতে চান ।
কেবল একবার ভেরিয়েবলকে বরাদ্দ করার অনুমতি দেওয়ার জন্য:
জাভা
public final double pi = 3.14; // essentially a constant
সি শার্প
public readonly double pi = 3.14; // essentially a constant
পার্শ্ব নোট হিসাবে, readonlyকীওয়ার্ডের প্রভাবটি এর চেয়ে আলাদা হয়const যে শব্দ readonlyঅভিব্যক্তি এ মূল্যায়ন করা হয় রানটাইম বদলে কম্পাইল-টাইম , অত নির্বিচারে এক্সপ্রেশন অনুমতি দেয়।
readonlyসদস্য ভেরিয়েবলগুলি কনস্ট্রাক্টরগুলিতে সংশোধন করা যেতে পারে: পেস্টবিন.এজক্জওয়াইজিআইএ
ইহা পারিপার্শ্বিক অবস্থা উপর নির্ভর করে।
finalবর্গ বা পদ্ধতি, সি # সমতূল্যsealed ।finalক্ষেত্রের জন্য, সি # সমতুল্যreadonly ।finalস্থানীয় পরিবর্তনশীল বা পদ্ধতি প্যারামিটার কোন সরাসরি C # এর সমতুল্য নয়।For a final local variable or method parameter, there's no direct C# equivalentএকটি বিশাল পার্থক্য।
constশুধুমাত্র মান ধরণের ক্ষেত্রে ব্যবহার করা যেতে পারে। আমি যতদূর জানি স্থানীয় রেফারেন্স ধরণের জন্য কার্যকর ধ্রুবক তৈরি করার কোনও উপায় নেই।
এখানে সকলেই যা অনুপস্থিত তা হ'ল জাভা চূড়ান্ত সদস্য ভেরিয়েবলের জন্য নির্দিষ্ট কার্যভারের গ্যারান্টি।
চূড়ান্ত সদস্যের ভেরিয়েবল ভের সাথে ক্লাস সি এর জন্য, সি এর প্রতিটি কনস্ট্রাক্টরের মাধ্যমে প্রতিটি সম্ভাব্য নির্বাহের পথে অবশ্যই একবার ভিকে অর্পণ করতে হবে - ভি বরাদ্দ করতে ব্যর্থ হওয়া বা দু'বার বা তার বেশি সময় নির্ধারণের ফলে ত্রুটি ঘটবে।
সি # এর পঠনযোগ্য কী-ওয়ার্ডের কোনও গ্যারান্টি নেই - সংকলকটি কেবল পাঠানো সদস্যদের অনির্ধারিত রেখে বা কনস্ট্রাক্টরের মধ্যে আপনাকে একাধিকবার নির্ধারিত করার অনুমতি দেওয়ার চেয়ে আনন্দিত।
সুতরাং, চূড়ান্ত এবং পঠনযোগ্য (অন্তত সদস্য ভেরিয়েবলের ক্ষেত্রে সম্মানের সাথে) অবশ্যই সমতুল্য নয় - চূড়ান্ত অনেক বেশি কঠোর।
উল্লিখিত হিসাবে, sealedএকটি সমতুল্যfinal পদ্ধতি এবং ক্লাস জন্য ।
বাকী হিসাবে, এটি জটিল।
জন্য static finalক্ষেত্র,static readonly সর্বনিকটবর্তী বস্তু সম্ভব। এটি আপনাকে স্ট্যাটিক ফিল্ডটি একটি স্ট্যাটিক কনস্ট্রাক্টরটিতে আরম্ভ করার অনুমতি দেয় যা জাভাতে স্থির আরম্ভের সাথে মোটামুটি মিল। এটি উভয়ই ধ্রুবকগুলিতে (আদিম এবং অপরিবর্তনীয় বস্তু) এবং পরিবর্তনীয় বস্তুর ধ্রুবক উল্লেখগুলির জন্য প্রযোজ্য।
দ্য constপরিবর্তক মোটামুটি ধ্রুবক জন্য অনুরূপ, কিন্তু আপনি তাদের একটি স্ট্যাটিক কন্সট্রাকটর সেট করতে পারবে না।
readonlyব্যবহার করা যেতে পারে। যদিও এটি সমান নয় -final এমনকি কনস্ট্রাক্টর বা ইনিশিয়ালাইজারেও ঠিক একটি অ্যাসাইনমেন্ট প্রয়োজন।finalআমি পরিচিত স্থানীয় ভেরিয়েবলের জন্য কোনও সি # সমতুল্য নেই। আপনি যদি ভাবছেন যে কারও প্রয়োজন কেন: আপনি যদি অন্যথায়, স্যুইচ-কেস বা তার আগে একটি পরিবর্তনশীল ঘোষণা করতে পারেন। এটি চূড়ান্ত ঘোষণা করে, আপনি প্রয়োগ করেন যে এটি একবারে অর্পণ করা হয়েছে।
সাধারণভাবে জাভা স্থানীয় ভেরিয়েবলগুলি পড়ার আগে কমপক্ষে একবার নির্ধারণ করা প্রয়োজন। মান পড়ার আগে যদি শাখাটি লাফ না দেয়, চূড়ান্ত পরিবর্তনশীল ঠিক একবার বরাদ্দ করা হয়। এই সমস্ত সংকলন সময় চেক করা হয়। এটির জন্য একটি ত্রুটির জন্য কম মার্জিন সহ ভাল আচরণ করা কোড দরকার।
সংক্ষেপে বলা যায়, সি # এর কোনও সরাসরি সমতুল্য নেই final। জাভাতে সি # এর কিছু সুন্দর বৈশিষ্ট্য নেই, তবে জাভা প্রোগ্রামার হিসাবে এটি আমার জন্য সতেজ হয় যেখানে সি # সমতুল্য বিতরণ করতে ব্যর্থ হয়।
জাভা ক্লাস চূড়ান্ত এবং পদ্ধতি চূড়ান্ত -> সিল। জাভা সদস্যের পরিবর্তনশীল চূড়ান্ত -> রানটাইম ধ্রুবকটির জন্য কেবলমাত্র পঠনযোগ্য, সংকলনের সময় ধ্রুবকের জন্য কনস্ট।
স্থানীয় পরিবর্তনশীল চূড়ান্ত এবং পদ্ধতি আর্গুমেন্ট ফাইনালের সমতুল্য নয়
সি # ধ্রুবকগুলি সংকলন সময়ের ধ্রুবকগুলির জন্য কনস্ট কীওয়ার্ড বা রানটাইম ধ্রুবকগুলির জন্য পঠনযোগ্য কীওয়ার্ড ব্যবহার করে ঘোষিত হয়। সি # এবং জাভা উভয় ভাষায় ধ্রুবকের শব্দার্থকতা একই is