আমি কীভাবে সি # 6 "স্থির ব্যবহার করে" বৈশিষ্ট্যটি ব্যবহার করব?


123

আমি # # স্ট্যাটিক ব্যবহার করে " বিশেষত সি # 6 এর কয়েকটি নতুন বৈশিষ্ট্যের দিকে এক নজরে রাখছি ।

স্ট্যাটিক ব্যবহার হ'ল একটি নতুন ধরণের ব্যবহারের ধরণ যা আপনাকে স্ট্যাটিক সদস্যদের প্রকারের সরাসরি স্কোপে আমদানি করতে দেয়।
(ব্লগ পোস্টের নীচে)

এর
পরিবর্তে আমার পাওয়া কয়েকটি টিউটোরিয়াল অনুসারে ধারণাটি নিম্নরূপ :

using System;

class Program 
{ 
    static void Main() 
    { 
        Console.WriteLine("Hello world!"); 
        Console.WriteLine("Another message"); 
    } 
}

Consoleস্ট্যাটিক ক্লাস ব্যবহারের নতুন সি # 6 বৈশিষ্ট্যটি ব্যবহার করে আপনি পুনরাবৃত্ত বিবৃতিটি বাদ দিতে পারেন :

using System.Console;
//           ^ `.Console` added.
class Program 
{ 
    static void Main() 
    { 
        WriteLine("Hello world!"); 
        WriteLine("Another message"); 
    } // ^ `Console.` removed.
}

তবে এটি আমার পক্ষে কাজ করছে বলে মনে হয় না। usingবিবৃতিতে আমি একটি ত্রুটি পেয়ে যাচ্ছি :

"এ ' using namespace' নির্দেশনা কেবল নামস্থানগুলিতে প্রয়োগ করা যেতে পারে; ' Console' এমন একটি নাম যা নাম স্থান নয় using staticinstead পরিবর্তে একটি ' ' নির্দেশ বিবেচনা করুন "

আমি ভিজ্যুয়াল স্টুডিও 2015 ব্যবহার করছি এবং আমার কাছে বিল্ড ভাষার সংস্করণ "C # 6.0" এ সেট করা আছে

কি দেয়? এমএসডিএন ব্লগের উদাহরণটি কি ভুল? কেন এই কাজ করে না?


সাম্প্রতিক আপডেটগুলি প্রতিফলিত করার জন্য ব্লগ পোস্টটি এখন আপডেট করা হয়েছে, তবে ব্লগটি নিচে যাওয়ার ক্ষেত্রে এখানে একটি স্ক্রিনশট রয়েছে:

ব্লগ

উত্তর:


177

ব্লগ পোস্টগুলি লেখা হওয়ার পরে বাক্য গঠনটি কিছুটা পরিবর্তিত হয়েছে বলে মনে হয়। ত্রুটি বার্তার পরামর্শ হিসাবে, staticআপনার অন্তর্ভুক্ত বিবৃতিতে যুক্ত করুন:

using static System.Console;
//      ^
class Program 
{ 
    static void Main() 
    { 
        WriteLine("Hello world!"); 
        WriteLine("Another message"); 
    } 
}

তারপরে, আপনার কোডটি সংকলন করবে।


মনে রাখবেন যে, সি # 6.0 এ এটি কেবলমাত্র ঘোষিত সদস্যদের জন্যই কাজ করবে static

উদাহরণস্বরূপ, বিবেচনা করুন System.Math:

public static class Math {
    public const double PI = 3.1415926535897931;
    public static double Abs(double value);
    // <more stuff>
}

কখন using static System.Math, আপনি কেবল ব্যবহার করতে পারেন Abs();
যাইহোক, আপনি এখনও উপসর্গ আছে চাই PIকারণ এটি একটি স্ট্যাটিক সদস্য নয়: Math.PI;

সি # সংস্করণ 7.2 দিয়ে শুরু করে, এটি হওয়া উচিত নয়, এর constমতো মানগুলিও PIব্যবহার করা যেতে পারে।


3
আমার একই সমস্যা হচ্ছে, তবে এর পরিবর্তে System.Math, বিশেষভাবে Math.PI। আমি যখন ব্যবহার করি তখন কাজের using static System.Mathমতো পদ্ধতিগুলি Sqrt()কিন্তু ধ্রুবকের মতো নয় PI। আমাকে লেখা চালিয়ে যেতে হবে Math.PIবা কোডটি সংকলন করে না। কেন এটি কাজ করে না তা সম্পর্কে আমি আগ্রহী। আমি কি এই জন্য একটি নতুন প্রশ্ন জমা দিতে হবে?
স্কারওয়্যার

5
@ এস্কওয়্যার: হ্যাঁ, এটি একটি নতুন প্রশ্নের উপাদান হিসাবে মনে হচ্ছে।
সার্বারবাস

1
@ স্কওয়্যারের প্রশ্নের তাত্ক্ষণিক উত্তর হিসাবে: "স্ট্যাটিক ব্যবহার করা একটি নতুন ধরণের ব্যবহারের ধারা যা আপনাকে স্থির সদস্যদের আমদানি করতে দেয় <...>" । শ্রেণীর স্থির সদস্য PIনয় । এটি একটি ধ্রুবক। সোজা কথায়: সদস্য হিসাবে ঘোষণা করতে হবে । Mathstatic
সেরব্রাস

3
একটি নতুন সিনট্যাক্সের মতো সুযোগের মতো শোনায়: using const System.Math;:)
ফিলিপ স্কাকুন

1
মাইক্রোসফ্ট ডকুমেন্টেশনের দাবির উদাহরণ পিআই উপসর্গ ছাড়াই ব্যবহার করা যেতে পারে: ডকস.মাইক্রোসফটকম
en-us

1

staticকী খুঁজতে হবে একটি উপর usingবিবৃতি শুধুমাত্র একটি নির্দিষ্ট ধরনের আমদানি করবে (এবং নেস্টেড ধরনের থাকবে)। তদ্ব্যতীত আপনাকে আর প্রকারের নাম দিতে হবে না। সুতরাং আপনার ব্যবহারের জন্য কেবল স্থির যোগ করুন।

দ্রষ্টব্য: দয়া করে এই বৈশিষ্ট্যটি কেবল তখনই ব্যবহার করুন যখন দুটি ক্লাস যুক্তিসঙ্গতভাবে নিবিড়ভাবে সম্পর্কিত, অন্যথায় এটি কোডটি পড়া বেশ শক্ত করে তোলে।


"আপনার অবশ্যই প্রকারের নামটি দেওয়া উচিত নয়" এর অর্থ কী? আমি এটা কোথায় করলাম?
সার্বারবাস

থোবিয়াস, আমি কোথাও দুটোকে একত্রিত করছি না।
সার্বারবাস

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