আমার কি ইন্টার বা ইন্টার 32 ব্যবহার করা উচিত?


352

সি # তে intএবং Int32একই জিনিস, তবে আমি বেশ কয়েকবার পড়েছি যা কোনও কারণ ছাড়াই intপছন্দ করা Int32হয়েছে। কোন কারণ আছে, এবং আমার যত্ন নেওয়া উচিত?


টুইট এই সম্পর্কে স্কিট দ্বারা যেখানে তিনি উপযোগী Int32 উপর int- এ যখন প্রোগ্রামিং এপিআই আছে।
comecme

@ জোহান বুবরিস্কি: এবং আসুন ভুলে যাবেন না যে এটির ব্যবহারের জন্য কম বিবৃতি ব্যবহারের প্রয়োজন (বা আপনি টাইপ করতে চাইছেন System.Int32)

আমার প্রশ্ন আছে: আমরা সরাসরি সিএলআর টাইপ ব্যবহার করছি না তবে কেন আমাদের এগুলি দরকার ??
আমিনএম

@ জোহান বুবরিস্কি ফেসবুকের স্ট্যাটাস আপডেট কোডের একটি অংশের চেয়ে টাইপ করা সহজ। ওখানে খারাপ চিন্তা! সহজ পাঠযোগ্য এবং বুঝতে সহজ টাইপ করার চেয়ে অনেক বেশি গুরুত্বপূর্ণ। When something can be read without effort, great effort has gone into its writing. Easy writing is hard reading
7hi4g0

উত্তর:


134

ইসমা -৩৩৪ : ২০০ C সি # ভাষা নির্দিষ্টকরণ (p18):

পূর্বনির্ধারিত ধরণের প্রতিটি সিস্টেম-সরবরাহিত টাইপের জন্য শর্টহ্যান্ড। উদাহরণস্বরূপ, কীওয়ার্ডটি intস্ট্রাককে বোঝায় System.Int32। শৈলীর বিষয় হিসাবে, সম্পূর্ণ সিস্টেম ধরণের নাম ব্যবহারের চেয়ে কীওয়ার্ডটির ব্যবহার পছন্দসই।


271

দুটি সত্যই সমার্থক; intএকটু বেশি পরিচিত খুঁজছেন হবে Int3232-bitness আরো অনেক কিছু আপনার কোড পড়া যারা স্পষ্ট করে তোলে। আমি intযেখানে কেবল 'পূর্ণসংখ্যার' দরকার সেখানেই ব্যবহার করতে চাইছি, Int32যেখানে আকারটি গুরুত্বপূর্ণ (ক্রিপ্টোগ্রাফিক কোড, কাঠামোগত) তাই ভবিষ্যতের রক্ষণাবেক্ষণকারীরা জানতে পারবেন যে এটি intযথাযথভাবে বাড়ানো নিরাপদ , তবে Int32একই পদ্ধতিতে পরিবর্তনের যত্ন নেওয়া উচিত ।

ফলাফলযুক্ত কোডটি অভিন্ন হবে: পার্থক্যটি সম্পূর্ণরূপে পঠনযোগ্যতা বা কোড উপস্থিতি।


65
আপনার কোডটি পড়া লোকেরা জানতে হবে যে সিস্টেমটি সিস্টেমের জন্য একটি উপ নাম int32। পাঠযোগ্যতার জন্য, ধারাবাহিকতা আরও বেশি গুরুত্বপূর্ণ।
ট্রয়স থমসন

11
পুরানো সি ++ মানসিকতার সাথে আপনারাদের জন্য, ইন্টারপ্রিটি 32 বিট ওএসের 32 বিট এবং একটি 64 বিট ওএসের 64 বিট হিসাবে ডিজাইন করা হয়েছে। এই আচরণটি এর সংক্ষিপ্ত ট্যাগে বিশেষভাবে উল্লেখ করা হয়। msdn.microsoft.com/en-us/library/system.intptr(VS.71).aspx
ডায়ামডে

87

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

public enum MyEnum : Int32
{
    member1 = 0
}

তবে এটি এর অনুমতি দেবে:

public enum MyEnum : int
{
    member1 = 0
}

চিত্রে যান.


9
আপনি যদি সিস্টেমটি পরীক্ষা করতে রিফ্লেক্টর ব্যবহার করেন। কোডটি এর মতো দেখায়: [সিরিয়ালাইজযোগ্য, স্ট্রাকটালাইআউট (লেআউটকিন্ড.সেকিউশিয়াল), কমভিজিবল (সত্য)] পাবলিক স্ট্রাক্ট ইন্টার 32: আইকোম্পারেবল, আইফর্ম্যাটেবল, আইকনভারটেবল, আইকোম্যাপারেবল <int>, আইকোয়াটেবল <int> {পাবলিক কনস্ট ম্যাক্সভ্যালু = 0x7fffffff; ... আপনি স্ট্রাক্ট থেকে কোনও প্রকার সংগ্রহ করতে পারবেন না। খুব কমপক্ষে আপনি একটি ত্রুটি পাবেন যা আপনাকে তা বলে। তবে এনামের আচরণটি কিছুটা আলাদা, যা আমি এরপরে মন্তব্য করব।
রাদেবাস

16
ইন্ট 32 থেকে এনাম সংগ্রহের অক্ষমতা হ'ল একটি নকশাকৃত আচরণ, যা। নেট কোডটি দেখেও দেখা যেতে পারে: [সিরিয়ালাইজেবল, কমভিজিবল (সত্য)] পাবলিক অ্যাবস্ট্রাক্ট ক্লাস এনুম: ভ্যালু টাইপ, আইকনপমারেবল, আইফর্ম্যাটেটেবল, নোম করুন যে এনাম উদ্ভূত হয়েছে ভ্যালুটাইপ থেকে? যদি আপনি কোনও অভ্যন্তরীণ ডেটা টাইপ (ইনট, বাইট, ইত্যাদি) ছাড়াও অন্য কোনও কিছু থেকে এনাম নেওয়ার চেষ্টা করেন তবে আপনি এমন একটি ত্রুটি পাবেন যা দেখতে দেখতে পাওয়া যায়: বাইট, এসবিট, সংক্ষিপ্ত, ushort, int, uint, দীর্ঘ, বা প্রত্যাশিত ।
রাদেবাস

2
@daylight নোট করুন যে enumব্যবহারের intজন্য নির্দিষ্ট করা একটি নয় derive, তবে একটি নির্দিষ্ট করা underlying type; দেখতে msdn.microsoft.com/en-us/library/sbbt4032.aspx#code-snippet-2
Jeroen Wiert Pluimers

2
@ জিরোয়ানওয়েয়ারটপ্লাইমার্স তবে এটি এখনও আকর্ষণীয় যে কেন তারা আক্ষরিকভাবে অন্তর্নিহিত প্রকারটি পরীক্ষা করে সিএস 1008 নিক্ষেপ করতে বেছে নিয়েছে , কারণ অন্তর্নিহিত প্রকারটি কেবল এনামের ধ্রুবকের ধরণ মাত্র, তাই সংকলিত হওয়ার পরে এটি সত্যিকার অর্থে কিছু যায় আসে না।
ইলিডানএস 4 মনোকিকে

5
@ ইলিডানএস 4, নতুন সংকলক রোজলিন সহ - এটি ঠিক করা হয়েছিল এবং উভয় বৈকল্পিক বৈধ
গ্রান্ডি

49

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

  1. প্রকারের নাম .NET ভাষার মধ্যে পৃথক হতে পারে। উদাহরণস্বরূপ, সি # তে, সিস্টেমের মানচিত্র I 64 longযখন পরিচালিত এক্সটেনশানগুলির সাথে সি ++ এ রয়েছে, longইন্টার 32 তে মানচিত্র। NET ব্যবহার করার সময় যেহেতু ভাষাগুলিকে মিশ্রিত করা যায় এবং ম্যাচ করা যায় তাই আপনি নিশ্চিত হতে পারেন যে স্পষ্ট শ্রেণীর নামটি সর্বদা পরিষ্কার হবে, পাঠকের পছন্দের ভাষা বিবেচনা করা উচিত no

  2. অনেক কাঠামোর পদ্ধতিতে তাদের পদ্ধতির নামের অংশ হিসাবে নাম রয়েছে:

    BinaryReader br = new BinaryReader( /* ... */ );
    float val = br.ReadSingle();     // OK, but it looks a little odd...
    Single val = br.ReadSingle();    // OK, and is easier to read

এটির সাথে একটি সমস্যা ভিজ্যুয়াল স্টুডিও অটো-সম্পূর্ণ এখনও ইনট ব্যবহার করে। সুতরাং আপনি যদি এটি তৈরি করেন List<Tuple<Int32, Boolean>> test = new, ভিজ্যুয়াল স্টুডিও এখন sertোকানো হবে List<Tuple<int, bool>>()। আপনি কি এই স্বতঃপূরণগুলি পরিবর্তন করার কোনও উপায় জানেন?
মিস্টারফক্স

2
হ্যাঁ, এটি একটি বিষয়; না, আমি জানি না কীভাবে সেগুলি বন্ধ করে দেওয়া যায়। পয়েন্ট # 2 আমার পক্ষে আর সমস্যা নয়, কারণ আমি varকোডের শব্দভাটা কমাতে যতটা সম্ভব ব্যবহার করি । যেসব মাঝে মাঝে স্বয়ংসম্পূর্ণতা আসে এবং আমার মেঝেতে থুথু পড়ে যায় সেগুলিতে আমি ম্যানুয়ালি সামঞ্জস্য করি - এটি আমার আক্ষরিক অর্থেই দ্বিতীয় বা দু'বার।
রেমি ডেস্প্রেস-স্মিথ

20

int একটি সি # কীওয়ার্ড এবং দ্ব্যর্থহীন।

বেশিরভাগ সময় এটি গুরুত্বপূর্ণ হয় না তবে দুটি বিষয় যা ইন্টার 32 এর বিপরীতে চলে:

  • আপনার একটি "সিস্টেম ব্যবহার করে" থাকা দরকার; বিবৃতি। "int" ব্যবহারের জন্য কোনও স্টেটমেন্ট ব্যবহারের প্রয়োজন নেই।
  • আপনার নিজের ক্লাসটি ইন্ট 32 বলে সংজ্ঞায়িত করা সম্ভব (যা নির্বোধ এবং বিভ্রান্তিকর হবে)। int সবসময় ইন্ট মানে।

এটি আপনার নিজস্ব 'ভার' শ্রেণি তৈরি করাও সম্ভব, তবে এটি লোকেদের এটি ব্যবহার থেকে নিরুৎসাহিত করে না।
নিম

প্রতিটি কীওয়ার্ড একটি সি # কীওয়ার্ড। ইতিমধ্যে সি এবং সি ++ এ ব্যবহৃত হয়েছিল। সুতরাং এটি সম্পর্কে বিশেষত সি # কিছুই নেই।
মিস্টারফক্স

12

ইতিমধ্যে বলা হয়েছে, int= Int32। নিরাপদ থাকতে, ডেটা টাইপ সীমানা সম্পর্কে যত্নশীল যে কোনও কিছু প্রয়োগ করার সময় int.MinValue/ সর্বদা ব্যবহার করার বিষয়ে নিশ্চিত হন int.MaxValue। মনে করুন। নেট intএখন সিদ্ধান্ত নিয়েছে যে Int64, আপনার কোড সীমাবদ্ধতার উপর নির্ভর করবে না।


8
@ স্পৌলসন: লাইন 1 তে মন্তব্য ত্রুটি: সমান প্রকারের মধ্যে বরাদ্দ নিষিদ্ধ। হ্যাঁ, একটি খারাপ রসিকতা।
জোহান জেরেল

22
যদি সি # স্পিকার (এটি একটি সি #, না। নেট সিদ্ধান্ত) কখনও কখনও int64 টি বিট তৈরির পরিবর্তনের সিদ্ধান্ত নিয়েছে , তবে এটি এমন একটি ব্রেকিং পরিবর্তন হবে যে আমি বিশ্বাস করি না যে এই জাতীয় ঘটনার বিরুদ্ধে রক্ষণাত্মকভাবে কোড করা সম্ভব (বা অবশ্যই বুদ্ধিমান)।
জন স্কিটি

9

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

অনুশীলনে, আমি সাধারণত তাদের আকারটি মনে করানোর জন্য কেবলমাত্র ইনট 32 ব্যবহার করি কারণ আমি পরিচালিত সি ++ লিখি (উদাহরণস্বরূপ সি # তে ব্রিজ করার জন্য) পাশাপাশি পরিচালনাহীন / নেটিভ সি ++ লিখি।

আপনি যতক্ষণ জানেন, সি # তে 64-বিট হয় তবে স্থানীয় সি ++ এ এটি 32-বিট হিসাবে শেষ হয়, বা চরটি ইউনিকোড / 16-বিট হয় যখন সি ++ এ 8 বিট থাকে। তবে আমরা কীভাবে এটি জানি? উত্তরটি হ'ল কারণ আমরা এটিকে ম্যানুয়ালটিতে দেখেছি এবং এটিও বলেছে।

সময় এবং অভিজ্ঞতার সাথে আপনি যখন সি # এবং অন্যান্য ভাষার মধ্যে ব্রিজ করার জন্য কোড লিখবেন তখন আপনি আরও ধরণের বিবেকবান হতে শুরু করবেন (এখানে কিছু পাঠক "আপনি কেন করবেন?") ভাবছেন, তবে আইএমএইচএও আমি বিশ্বাস করি এটি একটি ভাল অনুশীলন কারণ আমি গত সপ্তাহে আমি কী কোড করেছি তা মনে করতে পারি না (বা আমার এপিআই নথিতে আমাকে উল্লেখ করতে হবে না যে "এই প্যারামিটারটি 32-বিট পূর্ণসংখ্যা")।

ইন এফ # (যদিও আমি এটা ব্যবহার করেছি), তারা সংজ্ঞায়িত int- এ , int32 এবং nativeint । একই প্রশ্ন উঠা উচিত, "আমি কোনটি ব্যবহার করব?"। অন্যরা যেমন উল্লেখ করেছে, বেশিরভাগ ক্ষেত্রে, এটি (স্বচ্ছ হওয়া উচিত) উচিত নয়। তবে আমি কেবল অস্পষ্টতাগুলি সরাতে int32 এবং uint32 পছন্দ করব।

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


এটি। নেট এর উদ্দেশ্যকে অকার্যকর করে না? এফ # কীভাবেই হোক, গেটস তার অবসর নিয়ে চলে গেলেন এমন একটি ধারণা ...
নিক টার্নার

8

তার মাঝে কোন পার্থক্য নেই intএবং Int32, কিন্তু intএকটি ভাষা keyword হয় অনেক মানুষ (ঠিক মত শৈলীগত এটি পছন্দ stringবনাম String)।


7

আমার অভিজ্ঞতায় এটি একটি সম্মেলনের জিনিস ছিল thing ইন্ট 32 এর মাধ্যমে ইনট ব্যবহার করার কোনও প্রযুক্তিগত কারণ সম্পর্কে আমি অবগত নই, তবে এটি হ'ল:

  1. দ্রুত টাইপ করা।
  2. টিপিকাল সি # বিকাশকারীদের সাথে আরও পরিচিত।
  3. ডিফল্ট ভিজ্যুয়াল স্টুডিও সিনট্যাক্স হাইলাইট করার ক্ষেত্রে একটি আলাদা রঙ।

আমি শেষেরটি বিশেষভাবে পছন্দ করি। :)


7

কোনও পরিবর্তনশীল সংজ্ঞায়িত করার সময় আমি সর্বদা অ্যালাইজড প্রকারগুলি (ইনট, স্ট্রিং ইত্যাদি) ব্যবহার করি এবং স্থির পদ্ধতিতে অ্যাক্সেস করার সময় আসল নামটি ব্যবহার করি:

int x, y;
...
String.Format ("{0}x{1}", x, y);

ইন্টি ট্রাই পার্স () এর মতো কিছু দেখতে কেবল কুৎসিত মনে হচ্ছে। শৈলী ব্যতীত আমি এটি করার অন্য কোনও কারণ নেই।


5

আমি জানি যে সর্বোত্তম অনুশীলনটি ইনট ব্যবহার করা এবং সমস্ত এমএসডিএন কোড ইন্ট ব্যবহার করে। যাইহোক, যতদূর জানি আমি মানীকরণ এবং ধারাবাহিকতার বাইরে কোনও কারণ নেই।


5

যদিও তারা (বেশিরভাগ ক্ষেত্রে) অভিন্ন (এক [বাগ] পার্থক্যের জন্য নীচে দেখুন), আপনার অবশ্যই যত্ন নেওয়া উচিত এবং আপনার ইন্টার 32 ব্যবহার করা উচিত।

  • একটি 16-বিট পূর্ণসংখ্যার নামটি ইন্টার 16। Bit৪ বিটের পূর্ণসংখ্যার জন্য এটি ইন্টার 64৪ এবং একটি 32-বিট পূর্ণসংখ্যার জন্য স্বজ্ঞাত পছন্দটি হয়: ইনট বা ইন্টার 32?

  • টাইপ ইন্ট 16, ইন্ট 32, বা ইন্ট 64 এর ভেরিয়েবলের আকারের প্রশ্নটি স্ব-রেফারেন্সিং হয় তবে টাইপ ইন্টের একটি ভেরিয়েবলের আকারের প্রশ্নটি একেবারে বৈধ প্রশ্ন এবং প্রশ্নগুলি যতই তুচ্ছ, বিতর্কিত, নেতৃত্ব নয় বিভ্রান্তি, সময় নষ্ট করা, আলোচনার পথে বাধা ইত্যাদি etc. (এই প্রশ্নটি যে সত্য তা প্রমাণ করে)

  • ইন্ট 32 ব্যবহার করা বিকাশ করে যে বিকাশকারী তাদের ধরণের পছন্দ সম্পর্কে সচেতন। আবার কতটা বড় ইনট? ওহ হ্যাঁ, 32. নামটির সাথে আকারটি অন্তর্ভুক্ত করা হলে প্রকারের আকারটি প্রকৃতপক্ষে বিবেচিত হবে। ইন্ট 32 ব্যবহার করা অন্যান্য পছন্দগুলির জ্ঞানকেও উত্সাহ দেয়। লোকেরা কমপক্ষে বিকল্পগুলির স্বীকৃতি দিতে বাধ্য হয় না যখন এটি "পূর্ণসংখ্যার ধরণ" হয়ে ওঠার পক্ষে ইনট এর পক্ষে খুব সহজ হয়ে যায়।

  • 32-বিট পূর্ণসংখ্যার সাথে ইন্টারেক্ট করার উদ্দেশ্যে কাঠামোর মধ্যে বর্গটির নাম দেওয়া হয়েছে 32 Int আবার, যা: আরও স্বজ্ঞাত, কম বিভ্রান্তিকর, একটি (অপ্রয়োজনীয়) অনুবাদ (সিস্টেমে অনুবাদ নয়, তবে বিকাশকারীর মনে) নেই, ইত্যাদি int lMax = Int32.MaxValueনাকি Int32 lMax = Int32.MaxValue?

  • int সমস্ত .NET ভাষায় কোনও কীওয়ার্ড নয়।

  • যদিও এটি কখনও পরিবর্তিত হওয়ার সম্ভাবনা নেই এর পক্ষে যুক্তি রয়েছে তবে int সর্বদা কোনও আন্তঃ 32 নয়।

ত্রুটিগুলি টাইপ করতে এবং [বাগ] দুটি অতিরিক্ত অক্ষর।

এটি সংকলন করবে না

public enum MyEnum : Int32
{
    AEnum = 0
}

তবে এটি করবে:

public enum MyEnum : int
{
    AEnum = 0
}

আপনি বলছেন যে "16 বিট পূর্ণসংখ্যার নামটি ইনট 16, একটি 64 বিট পূর্ণসংখ্যার জন্য এটি ইন্টার 64 এবং 32 বিট পূর্ণ সংখ্যার জন্য স্বজ্ঞাত পছন্দটি হল: ইন্ট বা ইন 32?", তবে এর জন্য সি # কীওয়ার্ডও রয়েছে। Int16 = সংক্ষিপ্ত Int64 = দীর্ঘ সুতরাং আপনার উত্তরগুলির মধ্যে একটিকে ভুল অনুমানের উপর ভিত্তি করে নির্দেশ করুন।
মেল

"টাইপ ইন্টের ভেরিয়েবল একটি নিখুঁত বৈধ প্রশ্ন এবং প্রশ্ন, যতই তুচ্ছ, বিভ্রান্তিকর হয় না, বিভ্রান্তির কারণ হয়, সময় নষ্ট করে, আলোচনার বাধা দেয় ইত্যাদি। (এই প্রশ্নটি বিদ্যমান যে বিষয়টি প্রমাণ করে)।" আপনি কি আমার সাথে মজা করছেন? আপনি এমন ভাষায় কাজ করেন যা হুডের পিছনে কী তা আপনি পুরোপুরি বুঝতে পারেন না। বিকাশকারী যদি বুঝতে না পারে যে আদিম ধরণের কি তার সমান হয় তার জন্য রন্ধনসম্পর্কীয় কলা গ্রহণ করা উচিত। একটি ভিবি বিকাশকারী মত শোনাচ্ছে। আদিম ব্যবহারগুলি যে কোনও ভাষারই স্থানীয় এবং এটি পছন্দ করা উচিত। আপনি যদি আদিমকে পছন্দ না করেন তবে বাস্তবতা তৈরি না করেন এটি ঠিক।
নিক টার্নার

হুম, আমি আপনার মতামত জানা উচিত যে আপনার মতামত সাথে সম্পূর্ণই একমত নই ... তবে আমি জানতাম না যে এনামগুলি কেবল কীওয়ার্ড থেকে উত্তরাধিকারী হতে পারে। একটি চমত্কার নিরর্থক সত্য, তবে এখনও মজাদার :)
জওয়েন

4

আপনার যত্ন নেওয়া উচিত নয়। আপনার intবেশিরভাগ সময় ব্যবহার করা উচিত । এটি ভবিষ্যতে আপনার প্রোগ্রামটির বৃহত্তর আর্কিটেকচারে পোর্টিংয়ে সহায়তা করবে (বর্তমানে এটির intএকটি নাম System.Int32তবে এটি পরিবর্তিত হতে পারে)। কেবলমাত্র যখন পরিবর্তনশীল বিষয়গুলির বিট প্রস্থ (উদাহরণস্বরূপ: এ এর ​​স্মৃতিতে লেআউটটি নিয়ন্ত্রণ করতে struct) আপনার int32এবং অন্যদের ব্যবহার করা উচিত (সম্পর্কিত " using System;" সাথে)।


1
আপনি সিরিয়াস হতে পারবেন না ... পোর্টিং সহজ করবেন? আমি মনে করি না যে একটি অনুসন্ধান এবং প্রতিস্থাপন একটি বড় ব্যাপার।
ভিন্স পানুসিওও

2
(বর্তমানে ইনট্রেটিভ সিস্টেমের একটি উপাধি রয়েছে nt৩ কিন্তু এটি কী পরিবর্তন হতে পারে) ? ওহ এক আস ... তুমি কি সিরিয়াস?
ওয়বিক

আপনি এমন কোনও ভাষাতে কোড লিখবেন যা আপনি শেষ পর্যন্ত ট্র্যাশ করতে চান? ব্যবস্থাপনার সিদ্ধান্ত অনুসারে মনে হচ্ছে। Int বা int32 ব্যবহার করুন। Int32 দেখতে ভিবি
নিক টার্নার

আমার অর্থ হ'ল মায়া, (এবং এটি একটি বড় মায়াবী, আমি জানি না কেন ডিজাইনাররা সেভাবে এটি করেছিলেন) আপনার যে খিলানটি চলছে সেটির প্রস্থের একই প্রস্থের একই প্রান্তের ঘোষণার জন্য আপনার একটি উপায় থাকা উচিত, সি এর মতো / দীর্ঘ / ... কাজ করে। এটি এমন একটি প্রক্রিয়া (int থেকে ওরফ ইনট32) যা মনে হয় ঠিক এটি করার জন্য ডিজাইন করা হয়েছে। এবং বিবেচনায় রাখুন মাইক্রোসফ্ট সর্বদা "ইনট" বনাম "ইন্ট 32" ব্যবহার করার পরামর্শ দেয় (ঠিক যেমন তারা চাইত এটি যদি তাদের আসল উদ্দেশ্য ছিল)। আমি জানি, এটি একটি বড় আইএফ ... যখন আমি এই উত্তরটি লিখি তখন কোনও bit৪ বিট। নেট ফ্রেমওয়ার্ক ছিল না, তাই আমি জানি না যে তারা এই ক্ষেত্রে কী করবে।
ইয়াঙ্কো হার্নান্দেজ আলভারেজ

3

সিস্টেমটি আইটি 32 এর জন্য সি # ভাষার শর্টকাট int

যদিও এর অর্থ এই নয় যে মাইক্রোসফ্ট এই ম্যাপিংটি পরিবর্তন করতে পারে, ফগক্রিকের আলোচনার উপর একটি পোস্টে বলা হয়েছে [উত্স]

"Bit৪ বিটের ইস্যুতে - মাইক্রোসফ্ট প্রকৃতপক্ষে। নেট ফ্রেমওয়ার্কের একটি -৪-বিট সংস্করণে কাজ করছে তবে আমি নিশ্চিত যে এই সিস্টেমে bit৪ বিটের মানচিত্র তৈরি করা যাবে না।

কারণ:

1. সি # ইসিএমএ স্ট্যান্ডার্ডটি স্পষ্টভাবে বলে যে int 32 বিট এবং লম্বা 64 বিট।

২. মাইক্রোসফ্ট ফ্রেমওয়ার্ক সংস্করণ ১.১ এ অতিরিক্ত বৈশিষ্ট্য এবং পদ্ধতি প্রবর্তন করেছে যা অ্যারে.গেটলংথ ছাড়াও অ্যারে.গেটলং লেন্থের মতো ইনট মানগুলির পরিবর্তে দীর্ঘ মানগুলি ফিরিয়ে দেয়।

সুতরাং আমি মনে করি এটি নিরাপদ বলে যে সমস্ত অন্তর্নির্মিত সি # প্রকারগুলি তাদের বর্তমান ম্যাপিং রাখবে keep "


যদি একটি -৪-বিট সংস্করণ চালু করা হয় তবে তারা সম্ভবত সি # তে 'নেটিয়েন্টিন্ট' যুক্ত করবে (এটি বর্তমানে এফ # তে ব্যবহৃত হয়)। এটি কেবলমাত্র আরও দৃfor়তর করে যে 'ইন্টার' প্রবর্তন এবং এটি একটি অন্তর্বর্তী 32 হিসাবে সংজ্ঞায়িত করা একটি ভুল ছিল! এবং তাই একটি API (যেমন ReadInt32 নয় ReadInt না), রঙ (গা dark় বনাম হালকা নীল) এবং কেস সংবেদনশীলতা (ডেটটাইম বনাম int) স্ট্যান্ডপয়েন্ট থেকে অস্বস্তিকর। অর্থাত্ 'ডেটটাইম'-এর মান টাইপটি ইন্ট 32-এর মতো একটি উপকরণ কেন নেই?
কার্লো বোস

3

ইন্টি সিস্টেম.আইন্ট 32 হিসাবে একই এবং সংকলিত হয়ে গেলে এটি সিআইএল-তে একই জিনিসটিতে পরিণত হবে ।

আমরা সি # তে কনভেনশন অনুসারে ব্যবহার করি যেহেতু সি # সি এবং সি ++ (এবং জাভা) এর মতো দেখতে চায় এবং আমরা সেখানে এটি ব্যবহার করি ...

বিটিডাব্লু, আমি বিভিন্ন উইন্ডোজ এপিআই ফাংশনগুলির আমদানি ঘোষণার সময় System.Int32 ব্যবহার করে শেষ করি না। আমি নিশ্চিত নই যে এটি একটি সংজ্ঞায়িত সম্মেলন কিনা বা না, তবে এটি আমাকে মনে করিয়ে দেয় যে আমি একটি বাহ্যিক ডিএলএল যাচ্ছি ...


3

একসময়, সংকলক দ্বারা লক্ষ্যযুক্ত মেশিনের নিবন্ধের আকারে ইন্ট ডেটাটাইপ পেগ করা হয়েছিল। সুতরাং, উদাহরণস্বরূপ, একটি 16-বিট সিস্টেমের জন্য একটি সংকলক 16-বিট পূর্ণসংখ্যা ব্যবহার করবে।

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


3

আমি মাইক্রোসফ্ট এর স্টাইলকপ ব্যবহার করার পরামর্শ দিই ।

এটি FxCop এর মতো তবে স্টাইল-সম্পর্কিত ইস্যুগুলির জন্য। ডিফল্ট কনফিগারেশনটি মাইক্রোসফ্টের অভ্যন্তরীণ স্টাইল গাইডগুলির সাথে মেলে তবে এটি আপনার প্রকল্পের জন্য কাস্টমাইজ করা যায়।

অভ্যস্ত হতে কিছুটা সময় নিতে পারে তবে এটি অবশ্যই আপনার কোডটিকে আরও সুন্দর করে তুলবে।

লঙ্ঘনের জন্য স্বয়ংক্রিয়ভাবে পরীক্ষা করতে আপনি এটি আপনার বিল্ড প্রক্রিয়াতে অন্তর্ভুক্ত করতে পারেন।


আমি এই সম্পর্কে স্টাইলকপের সাথে সম্পূর্ণ একমত নই। হ্যাঁ এটি ভাল তবে আমি ইন্টার 32 ব্যবহার করতে পছন্দ করি কেন? দুটি নিম্নচিকিত উত্তর মত উত্তর এড়ানোর জন্য। লোকেরা আন্ত 32 কে সি
জন ডেমেট্রিও

2

intএবং Int32একই। intজন্য একটি উপনাম Int32


int কোনও উপাধ নয়, এটি একটি কীওয়ার্ড। অন্যান্য উত্তর দেখুন।
টিমোরস

int অবশ্যই ভাষার জন্য মূলশব্দ তবে এটিকে সিস্টেমের একটি উপকরণও বলা যেতে পারে .৩। তদ্ব্যতীত, এটি ভাবার আর একটি উপায় হ'ল using int = System.Int32; আপনার সমস্ত সোর্স কোড ফাইলের জন্য আপনার নির্দেশিকা রয়েছে।
uygar donduran

2

আপনার যত্ন নেওয়া উচিত নয়। যদি আকারটি উদ্বেগজনক হয় তবে আমি বাইট, সংক্ষিপ্ত, ইনট, তারপরে দীর্ঘ ব্যবহার করব। আপনি কেবলমাত্র ইন্ট 32 এর চেয়ে বড় ইন্ট ব্যবহার করবেন তার কারণ যদি আপনার 2147483647 এর চেয়ে বেশি বা -2147483648 এর চেয়ে কম সংখ্যার প্রয়োজন হয়।

এটি ছাড়া আমি যত্ন নেব না, অন্যান্য আইটেমগুলির সাথে সম্পর্কিত হতে পারে।


আমি যুক্ত করব যে আপনি সিস্টেমের পরিবর্তে "দীর্ঘ" শব্দটি ব্যবহার করতে পারেন ntInt64
কিথ

22
আপনি প্রশ্নটি ভুল বুঝেছেন। ওপি জিজ্ঞাসা করছে যে "ইনট আই" এবং "ইন্ট 32 আমি" ঘোষণার মধ্যে কোনও পার্থক্য রয়েছে কি না।
রেভেন

2

এটি অনুশীলনে কোনও পার্থক্য করে না এবং সময়ের সাথে আপনি নিজের সম্মেলনটি গ্রহণ করবেন। আমি কোনও প্রকার নির্ধারিত করার সময় কীওয়ার্ড এবং স্ট্যাটিক পদ্ধতি এবং এ জাতীয় ব্যবহার করার সময় শ্রেণি সংস্করণ ব্যবহার করার প্রবণতা রাখি:

int total = Int32.Parse("1009");


1

মাইক্রোসফ্ট একটি পূর্ণসংখ্যার জন্য ডিফল্ট বাস্তবায়নটিকে কিছু নতুন ফ্যাংল্ড সংস্করণে পরিবর্তিত করে তোলে (আসুন আমরা এটি ইন্টার 32 বি বলি) event

মাইক্রোসফ্ট তারপরে ইনট এলিফটি ইন্ট 32 বিতে পরিবর্তন করতে পারে এবং তাদের নতুন (এবং আশাকরি উন্নত) পূর্ণসংখ্যার বাস্তবায়নের সুবিধা নিতে আমার কোনও কোড পরিবর্তন করতে হবে না।

একই ধরণের যে কোনও কীওয়ার্ডের জন্য যায়।


0

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



0

ইন্ট বা ইন্ট 32 এর ব্যবহার একই পাঠকের জন্য কোডটি সহজ করার জন্য কেবল চিনা হয়।

নলযোগ্য রূপটি ইন্ট ব্যবহার করবেন? বা ইন্ট 32? নালযুক্ত ক্ষেত্রগুলিতে আপনি যখন ডেটাবেসগুলির সাথে কাজ করেন। এটি আপনাকে প্রচুর রানটাইমের সমস্যা থেকে বাঁচাবে।


0

কিছু সংকলক বিভিন্ন প্ল্যাটফর্মে অন্তর্নির্মিত জন্য বিভিন্ন আকার আছে (সি # নির্দিষ্ট নয়)

কিছু কোডিং স্ট্যান্ডার্ড (মিজ্রা সি) এর জন্য প্রয়োজনীয় যে সমস্ত ধরণের ব্যবহৃত হয় আকার নির্দিষ্ট করা হয় (যেমন Int32 এবং অন্তর্নিহিত নয়)।

বিভিন্ন ধরণের ভেরিয়েবলের জন্য উপসর্গগুলি নির্দিষ্ট করা ভাল (যেমন বি 8 বিট বাইটের জন্য ডাব্লু, 16 বিট শব্দের জন্য ডাব্লু এবং 32 বিট লম্বা শব্দের জন্য l => ইনট 32 এল মাই ভেরিয়েবল)

আপনার যত্ন নেওয়া উচিত কারণ এটি আপনার কোডটিকে আরও পোর্টেবল এবং আরও রক্ষণাবেক্ষণযোগ্য করে তোলে।

পোর্টেবল সি # তে প্রযোজ্য না হতে পারে যদি আপনি সর্বদা সি # ব্যবহার করতে যান এবং সি # স্পেসিফিকেশন এই ক্ষেত্রে কখনও পরিবর্তন হবে না।

রক্ষণাবেক্ষণযোগ্য ইহমো সর্বদা প্রযোজ্য হবে, কারণ আপনার কোডটি বজায় রাখা ব্যক্তি এই নির্দিষ্ট সি # নির্দিষ্টকরণ সম্পর্কে অবগত হতে পারে না এবং কোনও বাগটি মিস করবে যদি অন্তঃসত্ত্বা 2147483647 এর বেশি হয়ে যায়।

একটি সরল ফর-লুপে যা বছরের কয়েক মাস উদাহরণস্বরূপ গণনা করা হয়, আপনি যত্ন নেবেন না, তবে আপনি যখন এমন প্রসঙ্গে ভেরিয়েবলটি ব্যবহার করেন যেখানে এটি সম্ভবত বিদ্যুৎপ্রবাহ হতে পারে, আপনার যত্ন নেওয়া উচিত।

আপনি যদি এটিতে বিট-ওয়াইজ অপারেশন করতে চলেছেন তবে আপনারও যত্ন নেওয়া উচিত।


নেট। ইনট সর্বদা ইন্টার 32 এবং লম্বা সর্বদা ইন্টার 64
কেইথ

It is also good to specify prefixes for different type variablesহাঙ্গেরিয়ান স্বীকৃতি আজকাল মূলত অবহেলিত এবং বেশিরভাগ কোডিং শৈলী এটি ব্যবহারকে নিরুৎসাহিত করে। সফ্টওয়্যার সংস্থাগুলির অভ্যন্তরীণ সম্মেলনগুলিও প্রায়শই সেই স্বরলিপি নিষিদ্ধ করে
ফুচলভি

0

Int32প্রকারটি ব্যবহার করার জন্য একটি Systemসম্পূর্ণরূপে নেমস্পেসের রেফারেন্স বা পুরোপুরি যোগ্যতা অর্জন করতে হবে ( System.Int32)। আমি ঝোঁক int, কারণ এটির জন্য কোনও নামস্থান আমদানির প্রয়োজন হয় না, তাই কিছু ক্ষেত্রে নেমস্পেসের সংঘর্ষের সম্ভাবনা হ্রাস করে। আইএল-এ সংকলিত হয়ে গেলে, দুজনের মধ্যে কোনও পার্থক্য নেই।


0

ভিজ্যুয়াল স্টুডিওতে ইমিডিয়েট উইন্ডো অনুসারে 2012 ইন্ট 32 ইনট, ইন্টার 64 দীর্ঘ is এখানে ফলাফল:

sizeof(int)
4
sizeof(Int32)
4
sizeof(Int64)
8
Int32
int
    base {System.ValueType}: System.ValueType
    MaxValue: 2147483647
    MinValue: -2147483648
Int64
long
    base {System.ValueType}: System.ValueType
    MaxValue: 9223372036854775807
    MinValue: -9223372036854775808
int
int
    base {System.ValueType}: System.ValueType
    MaxValue: 2147483647
    MinValue: -2147483648

0

এছাড়াও Int16 বিবেচনা করুন। আপনার অ্যাপ্লিকেশনটিতে আপনার যদি মেমরিতে একটি পূর্ণসংখ্যার সঞ্চয় করার প্রয়োজন হয় এবং আপনি ব্যবহৃত মেমরির পরিমাণ সম্পর্কে উদ্বিগ্ন হন তবে আপনি ইন্ট 16 এর সাথে যেতে পারেন যেহেতু এটি কম মেমরি ব্যবহার করে এবং ইন্টার 32 এর চেয়ে কম ন্যূনতম / সর্বাধিক পরিসীমা রয়েছে (যা আসলে ।)


0

কিছুক্ষণ আগে আমি মাইক্রোসফ্টের সাথে একটি প্রকল্পে কাজ করছি যখন আমরা মাইক্রোসফ্ট। নেট সিএলআর পণ্য দলের কোনও ব্যক্তির কাছ থেকে এসেছি। এই ব্যক্তি উদাহরণ কোড কোড করেছেন এবং যখন তিনি তার ভেরিয়েবলগুলি সংজ্ঞায়িত করেন তখন তিনি "ইনট 32" বনাম "ইনট" এবং "স্ট্রিং" বনাম "স্ট্রিং" ব্যবহার করেছিলেন।

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

অন্য দিন আমি একটি পার্থক্য খুঁজে পেল! সংকলকটি আপনাকে "ইন্ট 32" ব্যবহার করে এনাম টাইপ করতে দেয় না, তবে আপনি যখন "ইনট" ব্যবহার করবেন এটি তা করে। কেন জানি না কারণ আমি এখনও জানি না।

উদাহরণ:

public  enum MyEnum : Int32
{
    AEnum = 0
}

এইটা কাজ করে.

public enum MyEnum : int
{
    AEnum = 0
}

থেকে নেওয়া: Int32 স্বরলিপি বনাম int

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