c# অবজেক্ট - সি#এবং জাভা মধ্যে প্রধান পার্থক্য কি কি?




ওরিয়েন্টেড প্রোগ্রামিং (7)

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

এই আমি সঙ্গে আসতে পারে যারা হয়:

  • জাভা "প্ল্যাটফর্ম স্বাধীন" হয়। আচ্ছা আজকাল আপনি বলতে পারেন যে Mono প্রকল্পটি তাই সি # Mono বিবেচনা করা যেতে পারে তবে আমি বিশ্বাস করি এটি একটি অতি ক্ষতিকর। কেন? আচ্ছা, যখন জাভাটির একটি নতুন সংস্করণ সম্পন্ন হয় তখন এটি একসাথে সমস্ত প্ল্যাটফর্মগুলিতে উপলব্ধ থাকে, অন্যদিকে সিও 3.0 এর কোন বৈশিষ্ট্যগুলি এখনও মোনো বাস্তবায়নে অনুপস্থিত? নাকি এটি সত্যিই CLR বনাম JRE যে আমরা এখানে তুলনা করা উচিত?
  • জাভা ইভেন্ট এবং প্রতিনিধি সমর্থন করে না। যতদুর আমি জানি.
  • জাভা মধ্যে সব পদ্ধতি ভার্চুয়াল হয়
  • ডেভেলপমেন্ট টুলস: ভিজ্যুয়াল স্টুডিও হিসাবে এখনও এমন একটি টুল নেই। বিশেষ করে যদি আপনি টিম সংস্করণগুলির সাথে কাজ করেছেন তবে আপনি কী বুঝবেন তা জানতে পারবেন।

আপনি প্রাসঙ্গিক মনে অন্যদের যোগ করুন।

হালনাগাদ: শুধু আমার মনের পপ আপ, জাভা ক্লাস, পদ্ধতি ইত্যাদি উপর কাস্টম গুণাবলী মত কিছু আছে না?


Answers

সি # ও জাভা মধ্যে পার্থক্য উপর Dare Obasanjo দ্বারা গভীরতার রেফারেন্স একটি মহান। আমি সর্বদা এই নিবন্ধটি উল্লেখ করছি যখন দুই মধ্যে সুইচিং।

http://www.25hoursaday.com/CsharpVsJava.html


জাভা 7 এবং সি # 3 তুলনা

(জাভা 7 এর কিছু বৈশিষ্ট্য এখানে উল্লেখ করা নেই, তবে জাভা 1-6 এর উপর C # এর সমস্ত সংস্করণের using বিবৃতি সুবিধাটি সরানো হয়েছে।)

আপনার সারাংশ সঠিক নয়:

  • জাভা পদ্ধতিতে ডিফল্টরূপে ভার্চুয়াল হয় কিন্তু আপনি তাদের চূড়ান্ত করতে পারেন। (সি # এগুলি ডিফল্টভাবে সিল হয়ে গেছে, তবে আপনি তাদের ভার্চুয়াল করতে পারেন।)
  • জাভাগুলির জন্য প্রচুর আইডিই রয়েছে, উভয় বিনামূল্যের (যেমন, অ্যাক্লিপস, নেটবিনস) এবং বাণিজ্যিক (যেমন ইন্টেলিজ আইডিইএ)

এর বাইরে (এবং আপনার সারাংশ কি ইতিমধ্যে আছে):

  • জেনেরিকস দুই মধ্যে সম্পূর্ণ ভিন্ন হয়; জাভা জেনেরিকগুলি কেবল একটি কম্পাইল-টাইম "ট্রিক" (তবে এটিতে একটি দরকারী এক)। C # এবং .NET জেনেরিক্সগুলি কার্যকর সময়েও রক্ষণাবেক্ষণ করা হয় এবং মান প্রকারের সাথে সাথে রেফারেন্স প্রকারগুলির জন্যও কাজ করে, যথাযথ দক্ষতা বজায় রাখে (উদাহরণস্বরূপ একটি List<byte> হিসাবে byte[] এটি ব্যাকডেড বাইটগুলির একটি অ্যারের পরিবর্তে ।)
  • সি # ব্যতিক্রম চেক না
  • জাভা ব্যবহারকারী-সংজ্ঞায়িত মান ধরনের তৈরি করার অনুমতি দেয় না
  • জাভা অপারেটর এবং রূপান্তর overloading নেই
  • জাভা এটিরেটরের সহজ প্রয়োগের জন্য ইটারার ব্লক নেই
  • জাভা LINQ মত কিছু নেই
  • আংশিকভাবে প্রতিনিধি না থাকার কারণে, জাভাটি বেনামী পদ্ধতি এবং ল্যাম্বা এক্সপ্রেশনগুলির মতো বেশ কিছু নেই। বেনামী ভেতরের ক্লাস সাধারণত এই ভূমিকা পূরণ, কিন্তু clunkily।
  • জাভা এক্সপ্রেশন গাছ আছে না
  • সি # অজ্ঞাত অন্তর্নিহিত ক্লাস আছে না
  • সি # জাভা এর অভ্যন্তরীণ ক্লাসগুলি আসলেই নেই, আসলে - C # এর সমস্ত নেস্টেড ক্লাসগুলি জাভাগুলির স্ট্যাটিক নেস্টেড ক্লাসগুলির মতো
  • জাভাটিতে স্ট্যাটিক ক্লাস নেই (যার কোনও ইনস্ট্যান্স কন্সট্রাক্টর নেই এবং ভেরিয়েবল, পরামিতি ইত্যাদি ব্যবহার করা যাবে না)
  • জাভা সি # 3.0 বেনামী ধরনের সমতুল্য নেই
  • জাভা অন্তর্নিহিতভাবে স্থানীয় ভেরিয়েবল টাইপ না
  • জাভা এক্সটেনশান পদ্ধতি নেই
  • জাভা বস্তু এবং সংগ্রহ প্রাথমিকীকরণ এক্সপ্রেশন আছে না
  • অ্যাক্সেস সংশোধনকারীরা কিছুটা ভিন্ন - জাভাতে আছে (বর্তমানে) কোনও সমাবেশের সরাসরি সমান নয়, তাই "অভ্যন্তরীণ" দৃশ্যমানতার কোন ধারণা নেই; C # তে জাভাতে "ডিফল্ট" দৃশ্যমানতার সমতুল্য নেই যা নামস্থান (এবং উত্তরাধিকার)
  • জাভা এবং সি # প্রারম্ভের ক্রমটি আলাদাভাবে আলাদা (C # বুনিয়াদের মূল সংযোগের কানেক্টেড কল করার আগে পরিবর্তনশীল প্রাথমিক নির্বাহকারীগুলিকে কার্যকর করে)
  • জাভা ভাষার অংশ হিসেবে বৈশিষ্ট্য নেই; তারা পেতে একটি সেট কনভেনশন / সেট / পদ্ধতি
  • জাভাটি "অনিরাপদ" কোডের সমতুল্য নয়
  • জাভা এর JNI এর চেয়ে ইন্টারপ সহজে সি # (এবং সাধারণভাবে। নেট)
  • জাভা এবং সি # আছে enums কিছুটা ভিন্ন ধারনা আছে। জাভা আরো বস্তু ভিত্তিক হয়।
  • জাভাতে কোন প্রিপোপ্রসেসর নির্দেশ নেই (# ডিফাইন, # আই ইত্যাদি # C)।
  • জাভা রেফারেন্স দ্বারা পরামিতি পাসের জন্য সি # এর ref এবং out এর সমতুল্য নেই
  • জাভা আংশিক ধরনের সমতুল্য আছে
  • সি # ইন্টারফেস ক্ষেত্র ঘোষণা করতে পারবেন না
  • জাভা কোন স্বাক্ষরিত পূর্ণসংখ্যা ধরনের আছে
  • জাভা একটি দশমিক ধরন জন্য কোন ভাষা সমর্থন আছে। (java.math.bigDecimal System.Decimal- এর মত কিছু সরবরাহ করে - পার্থক্যের সাথে - কিন্তু ভাষা সমর্থন নেই)
  • জাভা অমূল্য মান ধরনের সমতুল্য আছে
  • জাভাতে বক্সিংগুলি পূর্বনির্ধারিত (কিন্তু "স্বাভাবিক") রেফারেন্স প্রকারগুলি ব্যবহার করে তাদের উপর বিশেষ ক্রিয়াকলাপগুলি ব্যবহার করে। সি # এবং এনইটিতে বক্সিং আরও স্বচ্ছ ব্যাপার, কোনও মুল্যের জন্য CLR দ্বারা বক্সিংয়ের জন্য রেফারেন্স টাইপ তৈরি করা হচ্ছে।

এটি সম্পূর্ণ নয়, তবে এটি আমার কাছে যা কিছু মনে করতে পারে তা জুড়ে দেয়।


আরেকটি ভাল সংস্থান http://www.javacamp.org/javavscsharp/ এই সাইটটি অনেকগুলি উদাহরণকে সংজ্ঞায়িত করে যা এই দুটি প্রোগ্রামিং ভাষাগুলির মধ্যে প্রায় সমস্ত পার্থক্যকে সংহত করে।

গুণাবলী সম্পর্কে, জাভা এ্যানোটেশনস, যা প্রায় একই ভাবে কাজ করে।


C # এর বৈশিষ্ট্যগুলি জাভাতে অনুপস্থিত • সি # আরও আদিম ধরনের এবং গাণিতিক ব্যতিক্রমগুলি ধরতে কার্যকারিতা অন্তর্ভুক্ত করে।

• জাভা জুড়ে উল্লেখযোগ্য সুবিধার অন্তর্ভুক্ত, যার মধ্যে অনেকগুলি অপারেটর ওভারলোডিং এবং ব্যবহারকারী-সংজ্ঞায়িত কাস্টগুলি ইতিমধ্যে C ++ প্রোগ্রামারগুলির বৃহত্তর সম্প্রদায়ের কাছে পরিচিত।

• ইভেন্ট হ্যান্ডলিং একটি "প্রথম শ্রেণীর নাগরিক" - এটিই ভাষাটির অংশ।

• "structs" সংজ্ঞাগুলিকে অনুমতি দেয় যা ক্লাসগুলির সমান তবে স্ট্যাকের উপর বরাদ্দ করা যেতে পারে (C # এবং জাভাগুলিতে ক্লাসগুলির দৃষ্টান্তের বিপরীতে)।

• সি # ভাষা সিনট্যাক্স অংশ হিসাবে বৈশিষ্ট্য প্রয়োগ।

• সি # স্ট্রিং উপর কাজ করার জন্য সুইচ বিবৃতি অনুমতি দেয়।

• সি # বেনামী পদ্ধতি বন্ধ করার কার্যকারিতা প্রদান করে।

• সি # ইটারারেটরকে সক্ষম করে যা একটি কার্যকরী-শৈলী ফলন শব্দের মাধ্যমে সহ-রুটিনগুলি নিযুক্ত করে।

• সি # আউটপুট পরামিতিগুলির জন্য সমর্থন, একাধিক মান ফেরত সহায়তা, C ++ এবং SQL দ্বারা ভাগ করা একটি বৈশিষ্ট্য।

• সি # আছে ওরফে নামস্থান করার ক্ষমতা আছে।

• সি #তে "স্পষ্ট সদস্যের বাস্তবায়ন" রয়েছে যা ক্লাসকে তার নিজস্ব ক্লাস পদ্ধতির থেকে আলাদাভাবে ইন্টারফেসের পদ্ধতিগুলি বাস্তবায়নের অনুমতি দেয়। এটি একই নামের একটি পদ্ধতি আছে যা দুটি ভিন্ন ইন্টারফেস বাস্তবায়ন করতে পারবেন। একটি ইন্টারফেস পদ্ধতি পাবলিক হতে হবে না; তারা শুধুমাত্র যে ইন্টারফেস মাধ্যমে অ্যাক্সেসযোগ্য হতে তৈরি করা যেতে পারে।

• সি # COM এর সাথে ইন্টিগ্রেশন সরবরাহ করে।

• C এবং C ++ এর উদাহরণ অনুসরণ করে, C # আদিম এবং রেফারেন্স প্রকারের জন্য রেফারেন্স দ্বারা কল করতে দেয়।

জাভা বৈশিষ্ট্যগুলি সি #

• জাভা এর strictfp কীওয়ার্ড গ্যারান্টি দেয় যে ভাসমান বিন্দু ক্রিয়াকলাপগুলির ফল প্ল্যাটফর্ম জুড়ে একই থাকে।

• জাভা ত্রুটির ফাঁদ ও হ্যান্ডলিংয়ের আরও কার্যকর প্রয়োগের জন্য চেক ব্যতিক্রমগুলি সমর্থন করে।


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


নীচের লিঙ্কে ক্লিক করুন msdn.microsoft.com/en-us/library/ms836794.aspx এটি সি এবং জাভা উভয়ের মধ্যে সাদৃশ্য এবং পার্থক্যকে কভার করে


এছাড়াও আপনি প্রতিফলন ব্যবহার করে সরাসরি enum এর পাবলিক স্ট্যাটিক সদস্যদের সাথে বাঁধতে পারেন:

typeof(Suit).GetMembers(BindingFlags.Public | BindingFlags.Static)
    .ToList().ForEach(x => DoSomething(x.Name));




c# .net clr java