সি # বা .নেট ফিচারগুলি কোনও পশ্চাৎ সামঞ্জস্যতা প্রয়োজন অনুমান করে কেটে ফেলতে হবে? [বন্ধ]


18

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

বেশিরভাগ ফ্রেমওয়ার্ক / পণ্যগুলিতে পশ্চাদপদ সামঞ্জস্যতা সমর্থন করার প্রয়োজন না থাকলে বৈশিষ্ট্যগুলি কেটে ফেলা হত। আপনার মতে সি # / নেট এ এই বৈশিষ্ট্যগুলি কী কী?

অনুগ্রহ করে প্রতি উত্তরের একটি বৈশিষ্ট্য উল্লেখ করুন।



4
প্রশ্নটি গাইডলাইন অনুযায়ী পরিষ্কারভাবে গঠনমূলক নয়, এবং দুর্দান্ত উত্তরের ভিত্তিতে পরিষ্কারভাবে গঠনমূলক। পুনরায় খোলার জন্য ভোটদান।
PSr

1
এটি লজ্জাজনকভাবে বন্ধ হয়েছে, এখনও এরিক এখানে উত্তর দেওয়ার পরিবর্তে এটি ব্লগ করবে?
জে কে।

উত্তর:


35

নামবিহীন পদ্ধতি । আমি মনে করি সকলেই সম্মত হন যে সি # ২.০ এর জন্য বেছে নেওয়া বেনামি পদ্ধতি সিনট্যাক্সটি লম্বদা সিনট্যাক্সের তুলনায় আমরা সি # 3.0 তে যোগ করেছি এবং লম্বা। একই জিনিসটি করতে প্রায় দুটি প্রায় অভিন্ন সিনট্যাক্স থাকা অত্যন্ত দুর্ভাগ্যজনক।


1
সম্মত হন, বেনামী পদ্ধতিগুলি দুর্দান্ত ছিল যখন আমাদের কাছে ল্যাম্বডাস ছিল না ... এখন সেগুলি কেবল অপ্রয়োজনীয়।
মাইকেল ব্রাউন

9
বেনাম পদ্ধতির একটি বিশেষ বৈশিষ্ট্য লাম্বদা এক্সপ্রেশনগুলির চেয়ে অনেক বেশি ভাল .... তাদের নিখুঁত নাম !!
28:38

1
এই মুহুর্তে, আমি সি # তে বেনামে পদ্ধতিটির বাক্য গঠনটিও মনে রাখছি না। কিছু উদ্ভট কারণে যদি ল্যাম্বদার পরিবর্তে একটি ব্যবহার করতে হয় তবে আমাকে এটি সন্ধান করতে হবে।
ক্যারলেসা

33

আমি নন-জেনেরিক সংগ্রহগুলি থেকে মুক্তি পাব। এগুলি একটি ঘৃণা ... এবং এমন অনেকগুলি ঘটনা রয়েছে যেখানে আমি লিনাক ব্যবহার করি এবং এর মতো কিছু করতে হয়

var customObjects = container.CustomObjects.Cast<CustomObject>();

যতবারই আমাকে এটি করতে হয়, আমার আত্মার একটি ছোট অংশ মারা যায়।


এটি খুব দুর্দান্ত।

1
.NET এর সমস্ত বন্দর জেনারিক্সকে সমর্থন করে না। .NET মাইক্রো একটি উদাহরণ। কাস্টমঅবজেক্টস কখনই এই প্ল্যাটফর্মে না চলে সে ক্ষেত্রে আবেদন করা যাবে না
গুডগুইস_অ্যাক্টিভেট

2
আত্মা না রাখাই সুবিধা।
ক্যাফগিকে

29

এক প্রকার হিসাবে অকার্যকর । পৃথিবীতে কেন "শূন্য" এক প্রকার? এটির কোনও উদাহরণ নেই, এর কোনও মান নেই, আপনি এটিকে জেনেরিক টাইপ আর্গুমেন্ট, ফর্মাল প্যারামিটার টাইপ, লোকাল টাইপ, ফিল্ড টাইপ বা প্রোপার্টি টাইপ হিসাবে ব্যবহার করতে পারবেন না। প্রকার হিসাবে এর কোনও অর্থ নেই; পরিবর্তে, ভার্চুয়াল মেশিনের স্ট্যাকের উপর কোনও মেথড কলের কী প্রভাব ফেলেছে এটি একটি সত্য তবে ভার্চুয়াল মেশিনটি হ'ল: ভার্চুয়াল মেশিন। আসল মেশিন প্রত্যাবর্তিত মানটিকে একটি রেজিস্টারে রাখবে (সাধারণত x86 এ EAX) এবং স্ট্যাকটিকে মোটেই প্রভাবিত করবে না! প্রকার হিসাবে অকার্যকর চারদিকে কেবল একটি খারাপ ধারণা।

আরও খারাপ: যখন পয়েন্টার টাইপের ক্ষেত্রে void*এটি ব্যবহৃত হয় তার অর্থ রিটার্ন টাইপ হিসাবে ব্যবহৃত হওয়ার অর্থের চেয়ে সম্পূর্ণ আলাদা কিছু । এখন এর অর্থ "অজানা ধরণের সঞ্চয়স্থানের পয়েন্টার", যার অর্থ "এমন কোনও পদ্ধতি যা কোনও মূল্য ফেরায় না" হিসাবে এর অর্থের সাথে কিছুই করার থাকে না।

আমরা এর void*সাথে পয়েন্টার টাইপ হিসাবে প্রতিস্থাপন করতে পারি IntPtr। (এবং এর void**সাথে আরও কিছু আছে IntPtr*)) আমরা "ইউনিট" এর সাথে রিটার্ন টাইপ হিসাবে শূন্যস্থানটি প্রতিস্থাপন করতে পারি, এমন এক ধরণের যার একক মান রয়েছে, যথা, নাল। সিএলআর বাস্তবায়নের পরে সিদ্ধান্ত নিতে পারে যে ইউনিট-টাইপযুক্ত ফাংশন কল তার রেজিস্টারগুলি বা স্ট্যাকগুলি যথাযথভাবে অনুকূল করতে পারে, জেনে যে "নাল" ফিরিয়ে দেওয়া হচ্ছে তা নিরাপদে উপেক্ষা করা যেতে পারে knowing

এই জাতীয় বিশ্বে আপনার আর আলাদা Func<A, R>এবং Action<T>প্রতিনিধিদের দরকার নেই । Action<T>ঠিক হয় Func<T, Unit>


4
... এবং Taskমাত্র একটি Task<Unit>। অ্যাসিঙ্ক সিটিপি-র লাইব্রেরি বিটগুলি পুনরায় বাস্তবায়ন করা আমাকে সত্যই এই জন্য আগ্রহী করে তুলেছিল ...
জন স্কিচ

24

খালি বিবৃতি; । ত্রুটি-প্রবণ, প্রায়শই একটি টাইপো এবং আপনাকে এমন কোনও যুক্ত অর্থ দেয় যা ইতিমধ্যে প্রকাশ করা হয়নি {}


7
Performance৪-বিট জেআইটি </snark> এর অধীনে বিশাল পারফরম্যান্স পেনাল্টি উল্লেখ না করা।
জেসি সি। স্লাইসার

7
একটি খালি বিবৃতিতে পারফরম্যান্সের জরিমানা রয়েছে? তা কেন?
কুইন্টিন-স্টারিন

22

রেফারেন্স প্রকারের অ্যারেগুলিতে অনিরাপদ সমাহার । টাইপসেফ সমবায় IEnumerable<T>চালু থাকলে কমপক্ষে অ্যারে কোভেরিয়েন্সের প্রয়োজনীয়তা কিছুটা কেটে গেছে। (যদি আমাদের কাছে কোনও কোভেরিয়েন্ট পঠনযোগ্য কেবলমাত্র লিখিত ইন্টারফেস থাকে তবে আমাদের এটির প্রয়োজন হবে না))


আমি প্রশ্নের শিরোনাম দেখে আমি একেবারে এটি লিখতে যাচ্ছিলাম - আপনি আমাকে এটিকে মারলেন :(
ক্রিস স্মিথ

1
কোনও সমবায় অ্যারে রেফারেন্স গ্রহণ করার এবং সেখান থেকে পড়া অ্যারে রেফারেন্সগুলিতে নিরাপদে লেখার ক্ষমতা কার্যকর is যদি IList<T>উত্তরাধিকার সূত্রে প্রাপ্ত IReadableList<out T>এবং অ-জেনেরিকের IPemutableমতো হয় তবে এটি বাছাইয়ের মতো জিনিসগুলিকে সমর্থন করতে পারে তবে অ্যারেগুলি এটিকে আরও সহজে সমর্থন করে।
সুপারক্যাট

14

আনরি প্লাস অপারেটর । সর্বকালের সর্বনিম্ন দরকারী অপারেটর। আমাদের যদি এটি পিছনের দিকের কম্পাটের জন্য না রাখতে হয় তবে আমি এটিকে হৃদস্পন্দন থেকে বের করে আনব। কে এই জিনিস ব্যবহার করে, কেউ?

( +xস্পেসিফিকেশন: অ্যানারি প্লাস অপারেটর প্রিনক্রেনমেন্ট অপারেটর ++xনয়, পোস্টক্রেনমেন্ট অপারেটর x++নয় এবং বাইনারি অ্যাডিশন অপারেটরও নয় x+y))


1
(int i = 0; i <সিলিং; i++) এর জন্য
মাইকেল ব্রাউন

13
তিনি preincrement এবং postincrement অপারেটার কথা বলছি না চায়, সে ইউনারী প্লাস, একটি সংখ্যার উপর নেতিবাচক চিহ্ন বিপরীত কথা বলা হচ্ছে: +1 == 1। এটি কোনও অপ-অপেশনের কাছে খুব সুন্দর d
জেসি সি স্লিকার 19

8
এটা ঠিক মেশিন পাঠযোগ্য আউটপুট উপর প্রভাব সম্পর্কে, এটা মানুষের জন্য কোড চেহারা উন্নত করতে পারেন না: if(a == +1 || a == -1){...}
থমাস ব্র্যাট

5
@ShuggyCoUK কি বিশেষ করে উদ্ভট এটা সম্পর্কে এটি হল overloadable । কারণ তা অনেক ঘটে। আপনি জানেন যে আপনি কীভাবে কিছু জাভাস্ক্রিপ্ট লিখছেন এবং আপনি মনে করেন মানুষ, আমি আশা করি জেএস আমাকে সি-# এর মতো ব্যবহারকারী-সংজ্ঞায়িত আনরি প্লাস অপারেটর শব্দার্থবিজ্ঞান তৈরি করার অনুমতি দেয়
এরিক লিপার্ট

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

12

সংখ্যার আক্ষরিক এখানে ডিফল্ট করা হচ্ছে double

বেশিরভাগ ব্যবসায়িক অ্যাপ্লিকেশনগুলির decimalজন্য যাইহোক , আরও উপযুক্ত ... বা সম্ভবত এটি একটি ডিফল্ট ধারণাটি সরিয়ে ফেলা ভাল হবে এবং বিকাশকারীকে আসলে পছন্দটি করতে বাধ্য করা ভাল।

(এটি "ডিফল্ট অপসারণ" অন্যান্য কিছু জিনিসের জন্যও উপযুক্ত হবে For উদাহরণস্বরূপ, আমি সবাইকে বোঝানোর চেষ্টা ছেড়ে দিয়েছি যে ডিফল্টরূপে ক্লাসগুলি সিল করা উচিত, তবে আমি সন্দেহ করি যে লোকেরা তাদের সম্পর্কে চিন্তাভাবনা করা উচিত যাতে তাদের সম্পর্কে চিন্তা করা উচিত) তাদের নতুন বর্গটি সিল করা উচিত কিনা এবং তা স্পষ্ট করে দেওয়া উচিত))


আমি সম্ভবত এমন
আক্ষরিক

যদি তারা জাভাতে থাকে - জোশুয়া ব্লচের পবিত্র গ্রন্থগুলিতে তাদের উল্লেখ করুন "উত্তরাধিকারের জন্য নকশা বা নথিপত্র বা অন্যথায় এটি নিষিদ্ধ করুন" মার্টিনফাউলার / ব্লিকি / ডিজাইনআইনারিটাইজস html আইআইআরসি কোটলিন ডিফল্টরূপে সিল ক্লাস করে, তাই শিল্পটি এগিয়ে চলেছে এই ক্ষেত্রে একটি ভাল দিক।
এলাজার লাইবোভিচ

ক্লাস কেন সিল করা উচিত?
জেমস

@ জেমস: ঠিক যে কারণেই জোশ দেয়। বুদ্ধিমান, ধারাবাহিক উপায়ে উত্তরাধিকার সক্ষম করে এমন একটি শ্রেণির নকশা তৈরি করতে সময় লাগে - এবং উত্তরাধিকার কীভাবে ব্যবহৃত হবে তা না জেনে তা করা আরও খারাপ।
জন স্কিটি

1
@ পেসারিয়র: অপরিবর্তনীয়তা সম্পর্কে চিন্তা করুন, উদাহরণস্বরূপ। একটি সিলবিহীন শ্রেণি অপরিবর্তনীয় বলে দাবি করতে পারে না, কারণ সাবক্লাসগুলি পরিবর্তনীয়তার পরিচয় দিতে পারে।
জন স্কিটে

7

এটি কোনও বৈশিষ্ট্যের চেয়ে আরও বেশি গাইডলাইন, তবে আমি এটি গুরুত্বপূর্ণ বলে মনে করি কারণ এটি ইতিমধ্যে প্রচলিত এবং সর্বোত্তম সমাধান হিসাবে মানুষের মনে অনেক বেশি সংক্রামিত হয়েছে:

সরকারী প্যাটার্ন বাস্তবায়ন IDisposable

এটি জটিল এবং আরও ভাল উপায় আছে


6

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


4

পদ্ধতি এবং প্রকারগুলি Arrayএবং List<T>এটি লিনকের সাথে অচল হয়ে যায়, উদাহরণস্বরূপ:

  • Array.TrueForAll সঙ্গে প্রতিস্থাপন করা যেতে পারে Enumerable.All
  • Array.FindAll সঙ্গে প্রতিস্থাপন করা যেতে পারে Enumerable.Where
  • List<T>.ConvertAll সঙ্গে প্রতিস্থাপন করা যেতে পারে Enumerable.Select
  • Predicate<T> সঙ্গে প্রতিস্থাপন করা যেতে পারে Func<T, bool>
  • Converter<T,R> সঙ্গে প্রতিস্থাপন করা যেতে পারে Func<T, R>
  • IComparer<T> সত্যই একজন প্রতিনিধি হওয়া উচিত Func<T, T, int>

3
আমি পছন্দ করি Predicate<T>কারণ এটি কীভাবে ফাংশনটি ব্যবহৃত হয় তার উদ্দেশ্যটি ক্যাপচার করে এবং টাইপিংয়ের একটি ক্ষুদ্র বিট সংরক্ষণ করে।
জেবি

2

নন-জেনেরিক প্রতিনিধিরা নন-জেনেরিক সংগ্রহের মতো, নন-জেনেরিক প্রতিনিধিরা এখন অদৃশ্য যে আমাদের ফানক এবং অ্যাকশন সিরিজ রয়েছে। এবং আমি তিনটি প্যারামিটারে রূপগুলি কেটে ফেলতাম। আপনার যদি তিনটির বেশি প্যারামিটার থাকে তবে একটি কাঠামো তৈরি করুন এবং এটি একক প্যারামিটার হিসাবে ব্যবহার করুন। ইভেন্ট হ্যান্ডলিংয়ের জন্য একটি নির্দিষ্ট প্রতিনিধি ঘোষণা করা খুব DRY নয় DR


3
আপনি কীভাবে এমন কোনও পদ্ধতির প্রতিনিধিকে সংজ্ঞায়িত করবেন যা অ্যাকশন বা ফানকের সাথে সংশোধন করে? আপনি যদি একটি সংজ্ঞায়িত হবে combinator Func সঙ্গে? অর্থাৎ, "ডেলিগেট ডিডি (ডি ডি)" বলার উপায় নেই; ফানক সহ
এরিক লিপার্ট

2
হুঁ ... আমি সংশোধন করে দাঁড়িয়ে আছি। এজন্য আমি আপনার সক্ষম হাতে আমি যে সরঞ্জামগুলি ব্যবহার করি তা তৈরির কাজটি ছেড়ে দিই;)
মাইকেল ব্রাউন

@ এরিকলিপার্ট: আমি একটি বিশেষ প্রতিনিধি শ্রেণি দেখতে চাই যা সিএলআর ম্যাজিকের মাধ্যমে "প্রত্যেক" ধার্মিকতার প্রতিনিধি এবং মান / রেফারেন্স প্যারামিটারের সংমিশ্রণ রাখে [উপযুক্ত-ফর্ম্যাটযুক্ত নামযুক্ত যাদু শ্রেণিতে প্রতিনিধি সন্ধান করা তৈরি করবে) টাইপ] করুন, এবং সঠিক স্বাক্ষরের সমস্ত প্রতিনিধি এতে উত্তরাধিকারী হবেন। একটি নির্দিষ্ট প্রতিনিধি চায় এমন কোডটির জন্য এখনও সঠিক ধরণের প্রয়োজন হবে, তবে কোড যা একটি নির্দিষ্ট স্বাক্ষর চায় তা যাদুটির নামটি ব্যবহার করতে পারে।
সুপারক্যাট

-1

asmx ওয়েব পরিষেবাদি

আমি মনে করি তারা আজকাল ডাব্লুসিএফের সাথে বেশ অপ্রচলিত।


6
হ্যাঁ, তবে মাঝেমাঝে আঁকানো খুব সহজ। । ।
ওয়াট বার্নেট

-2

উইনফর্ম
দুটি ডেস্কটপ প্ল্যাটফর্মের মধ্যে নেভিগেট না করাই ভাল। ডাব্লুপিএফ হ'ল জিনিসগুলি যেখানে চলছে, তাই প্ল্যাটফর্ম স্তরের রিডানডেন্সি পূর্ণ করতে হতাশ।


উইনফর্মগুলি ডাব্লুপিএফের চেয়ে অনেক বেশি স্থিতিশীল, দ্রুত এবং কম বগী বলে মনে হচ্ছে ...
পেসারিয়ার

যখন আপনাকে কেবল একটি ছোট ডেস্কটপ অ্যাপ্লিকেশন হ্যাক করতে হবে তখন ডাব্লুপিএফ প্রধান ওভারকিল।
কিরেলেসা

মনে হচ্ছে ডাব্লুপিএফ WinRT এর পক্ষে বেশ অপ্রচলিত হয়ে উঠেছে। তবে, আমার কাছে মনে হয় ব্যবসায়ের বিকাশে ডাব্লুপিএফের চেয়ে উইনফর্মস বেশি জীবিত। এছাড়াও দেখুন স্ট্যাকওভারফ্লো.com
ডক ব্রাউন
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.