সি # 6.0। নেট 4.0 এর জন্য কাজ করে?


275

আমি সি # 6.0 গুডিসহ একটি নমুনা প্রকল্প তৈরি করেছি - উদাহরণ হিসাবে নাল প্রচার এবং বৈশিষ্ট্যের সূচনা, লক্ষ্য সংস্করণ সেট করুন। নেট 4.0 এবং এটি ... কাজ করে।

public class Cat
{
    public int TailLength { get; set; } = 4;

    public Cat Friend { get; set; }

    public string Mew() { return "Mew!"; }
}

class Program
{
    static void Main(string[] args)
    {
        var cat = new Cat {Friend = new Cat()};
        Console.WriteLine(cat?.Friend.Mew());
        Console.WriteLine(cat?.Friend?.Friend?.Mew() ?? "Null");
        Console.WriteLine(cat?.Friend?.Friend?.TailLength ?? 0);
    }
}

এর অর্থ কি এই যে আমি নিজের সফ্টওয়্যারটির জন্য নেট # 6.0 বৈশিষ্ট্যগুলি ব্যবহার করতে পারি যা নেট .0 4.0 কে লক্ষ্য করে? কোন সীমাবদ্ধতা বা ত্রুটি আছে?


7
। নেট সংস্করণ 2.0 - 3.5 সিএলআর ভি 2.0 ব্যবহার করে। আরও নতুন সংস্করণগুলি সিএলআর ভি 4.0 ব্যবহার করে।
i3arnon

এটি মাথায় রাখুন, বুদ্ধিমানের অনুকূল করুন: আপনি প্রতিটি বিড়ালের জন্য আলাদা আলাদা নফ-চেক যুক্ত করছেন
টেরেন্স

2
আমার সৌভাগ্য. আমি কেবলমাত্র "স্মরণ করিয়ে দেওয়ার জন্য" প্রযোজনা সার্ভারটি 2018 পর্যন্ত আপগ্রেড করা হবে না বলে একটি ডাব্লুসিএফ লক্ষ্যবস্তু বিকাশ করেছি I আমি ভেবেছিলাম যে এক মাসের কাজের মূল্য কয়েক দিনের রিফ্যাক্টরিংয়ের প্রয়োজন হবে require পাঁচ মিনিটে শেষ হয়েছে। ধন্যবাদ, মাইক্রোসফ্ট! : ডি
এরিক উ

উত্তর:


286

হ্যাঁ (বেশিরভাগ) সি # 6.0 এর জন্য নতুন রোজলিন সংকলক প্রয়োজন, তবে নতুন সংকলক পুরানো কাঠামো সংস্করণগুলি লক্ষ্য করে সংকলন করতে পারে। এটি কেবলমাত্র নতুন বৈশিষ্ট্যগুলিতে সীমাবদ্ধ যা ফ্রেমওয়ার্ক থেকে সমর্থন প্রয়োজন হয় না

উদাহরণস্বরূপ, আপনি। নেট এর পূর্ববর্তী সংস্করণগুলির সাথে সি # 6.0 এ স্ট্রিং ইন্টারপোলেশন বৈশিষ্ট্যটি ব্যবহার করতে গিয়ে (এটি যেমন কলটিতে ফলাফল হিসাবে আসে string.Format):

int i = 3;
string s = $"{i}";

এটির জন্য IFormattableকেবলমাত্র নতুন ফ্রেমওয়ার্ক সংস্করণ যুক্ত হিসাবে আপনার 4.6 নেট দরকার System.FormattableString:

int i = 3;
IFormattable s = $"{i}";

আপনি যে কেসগুলি উল্লেখ করেছেন সেগুলির কাজ করার জন্য কাঠামোর ধরণের প্রয়োজন নেই। সুতরাং সংকলক পুরানো কাঠামো সংস্করণগুলির জন্য এই বৈশিষ্ট্যগুলিকে সমর্থন করতে পুরোপুরি সক্ষম।


31
প্রকৃতপক্ষে, আপনার দরকার নেই। নেট 4.6, এটিতে যুক্ত হওয়া মাত্র কয়েকটি প্রকার। এগুলি আপনি নিজের থেকে পুরানো ফ্রেমওয়ার্কগুলিতে যুক্ত করতে পারেন। এই কোড। নেট 4.0 এবং 3.5 তে সূক্ষ্মভাবে কাজ করে।
সুইভ

10
। নেট 4.0 এ কোন সি # 6 বৈশিষ্ট্যগুলি কাজ করে তা দেখার জন্য কোথাও একটি তালিকা আছে? এটি জিজ্ঞাসার আরেকটি উপায় হ'ল: কোন নতুন বৈশিষ্ট্যগুলির কাঠামোর সমর্থন প্রয়োজন এবং কোনটি নয়?
রুবেনিসমে

1
@ রুবেনিসমে আমি IFormattableস্ট্রিং ইন্টারপোলেশন ব্যতীত অন্য কোনওটির কথা ভাবতে পারি না ।
i3arnon

2
আমি অনুমান করি যে আমরা বলতে পারি যে সমস্ত সিনট্যাকটিক সুগারগুলি পুরানো কাঠামোর সংস্করণগুলিতে ব্যবহার এবং লক্ষ্যবস্তু করা যেতে পারে। এটা কি ঠিক আছে?
এমকেবি

4
@ এমকেবি হ্যাঁ সিনট্যাকটিক চিনি হ'ল সেই বৈশিষ্ট্যগুলি যা কেবল সংকলক সক্ষমতার উপর নির্ভর করে না ফ্রেমওয়ার্কের উপর নির্ভর করে।
i3arnon

52

কীভাবে উইকিপিডিয়া এবং অন্যান্য লিঙ্কগুলি বোঝা যায় সেদিকে মনোনিবেশ করতে চান।

উইকিপিডিয়া যখন বলে যে সি # 6.0 নেট নেট ফ্রেমওয়ার্ক 4.6 এর সাথে রয়েছে, এর সহজ অর্থ হ'ল সংকলকটির প্রযোজনা সংস্করণ (msc.exe)। নেট ফ্রেমওয়ার্ক 4.6 রিলিজের অংশ হবে। মাল্টি-টার্গেটিংয়ের মাধ্যমে , এই জাতীয় সংকলকগুলি .NET ফ্রেমওয়ার্ক রিলিজের নিম্ন সংস্করণগুলিকে সমর্থন করতে পারে। অবশ্যই, যেহেতু রোজলিন একটি ওপেন সোর্স প্রকল্পে পরিণত হয়েছে, কম্পাইলারটি এখন সম্পূর্ণ পৃথক উপাদান।

যখন কোনও কিছু 4.0.30319 (.0) এর সিএলআর সংস্করণকে বোঝায়, তখন এটি প্রকৃতপক্ষে। নেট ফ্রেমওয়ার্ক 4 হতে পারে 4.5 * (4.0, 4.0। *, 4.5, 4.5। *, 4.6, 4.6। *), যেমন তারা সবাই প্রয়োগ করে সিএলআর সংস্করণ 4 স্পেসিফিকেশন। জামারিন / মনো উল্লেখ না করে একই সিএলআর স্পেসিফিকেশন প্রয়োগ করে।

এমএসডিএন পৃষ্ঠাটি এখনও পুরোপুরি আপডেট করা হয়নি তবে কিছু পৃষ্ঠায় ইতিমধ্যে সংস্করণ তথ্য বিভাগে তালিকাভুক্ত নেট ফ্রেমওয়ার্ক 4.6 রয়েছে।

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


29

হ্যাঁ, আপনি পুরানো ফ্রেমওয়ার্কগুলির জন্য আরও নতুন সংকলকগুলি ব্যবহার করতে পারেন এবং নতুন সংকলক বৈশিষ্ট্যগুলিতে অ্যাক্সেস পেতে পারেন (যতক্ষণ না সেই বৈশিষ্ট্যগুলিতে .NET 4.6 এ নতুন ধরণের প্রয়োজন হয় না)।

এর অন্যান্য উদাহরণগুলি ডিফল্ট প্যারামিটারগুলির সাথে সি # 4.0 (.NET 4.0) চালু করা হয়েছিল তবে আপনি সেগুলি .NET 2.0 (সি # 2.0) এবং .NET 3.5 (সি # 3.0) প্রকল্পগুলিতে ব্যবহার করতে পারবেন।

আপনি .NET 2.0 বা .NET 3.0 এ এক্সটেনশন পদ্ধতিগুলি (সি # 3.0 এ প্রবর্তিত) ব্যবহার করতে সক্ষম হন যদি আপনি সংকলককে খুশি করতে একটি ছোট কাজ করে থাকেন তবে এটি নেট .৩.০ এ প্রবর্তিত একটি বৈশিষ্ট্যটি খুঁজে পেতে পারে।


1

আপনি যদি বিল্ডিং অ্যাসক্রিপ্টগুলি ব্যবহার করছেন তবে নতুন বিল্ডারের দিকে পথ পরিবর্তন করতে মনে রাখবেন:

সিপিএটিএইচ = সি: \ প্রোগ্রাম ফাইল (x86) \ এমএসবিল্ড \ 14.0 \ বিন

[Rebuild.bat]

set CPATH=C:\Program Files (x86)\MSBuild\14.0\Bin
call nuget_restore.bat
"%CPATH%\msbuild" YourSolution.sln /t:Rebuild /p:Configuration=Release /fileLogger /flp:logfile=JustErrors.log;errorsonly /verbosity:minimal

if %errorlevel% neq 0 goto ERROR

REM call deploy Release  //Things like deploy files..
goto END

:ERROR
       echo ERROR: %errorlevel%
       pause

:END

1

@Oobe এর উত্তর আসলে আমদানিকারক। আমি কেবলমাত্র সি: \ প্রোগ্রাম ফাইলগুলি (x86) \ এমএসবিল্ড \ 14.0 \ বিন থেকে এমএসবিল্ড.এক্সই ব্যবহার করার পরে ব্যাচ ফাইলের মাধ্যমে আমার সমাধানটি তৈরি করতে পারি ।

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