কিভাবে সি # নেটে প্রোটোটাইপ পদ্ধতি (জাভাস্ক্রিপ্ট) তৈরি করতে পারি?

কিভাবে C #। নোটে প্রোটোটাইপ পদ্ধতি তৈরি করা সম্ভব?

জাভাস্ক্রিপ্ট মধ্যে, আমি স্ট্রিং বস্তুর জন্য একটি তিরস্কার পদ্ধতি তৈরি করতে নিম্নলিখিত করতে পারেন:

String.prototype.trim = function() {
    return this.replace(/^\s+|\s+$/g,"");
}

কিভাবে আমি এই # সি কাজ করতে পারেন? নিট?

0
ro fr hi

4 উত্তর

3.5 কম্পাইলার ব্যবহার করে আপনি একটি এক্সটেনশন পদ্ধতি ব্যবহার করতে পারেন:

public static void Trim(this string s)
{
  // implementation
}

আপনি এই হ্যাক সহ একটি CLR 2.0 লক্ষ্যপূর্ণ প্রকল্প (3.5 কম্পাইলার) ব্যবহার করতে পারেন:

namespace System.Runtime.CompilerServices
{
  [AttributeUsage(AttributeTargets.Method | AttributeTargets.Class | AttributeTargets.Assembly)]
  public sealed class ExtensionAttribute : Attribute
  {
  }
}
0
যোগ

আপনি গতিশীলভাবে বিদ্যমান বস্তুর বা ক্লাসে NET- এ ক্লাস যোগ করতে পারবেন না, সেই শ্রেণীর জন্য উৎস পরিবর্তন করে।

তবে আপনি সি # 3.0 তে এক্সটেনশন পদ্ধতি ব্যবহার করতে পারেন, যা নতুন পদ্ধতিগুলির মত দেখ , কিন্তু কম্পাইল-টাইম জাদু।

আপনার কোডের জন্য এটি করতে:

public static class StringExtensions
{
    public static String trim(this String s)
    {
        return s.Trim();
    }
}

এটি ব্যবহার করার জন্য:

String s = "  Test  ";
s = s.trim();

এটি একটি নতুন পদ্ধতির মত দেখায়, তবে এই কোডটি ঠিক একই ভাবে কম্পাইল করবে:

String s = "  Test  ";
s = StringExtensions.trim(s);

ঠিক কি আপনি সাধন করার চেষ্টা করছেন? সম্ভবত আপনি কি করতে চান ভাল উপায় আছে?

0
যোগ
ধন্যবাদ Lassevk, মহান উত্তর :) প্রতিক্রিয়া "ঠিক কি আপনি সম্পন্ন করার চেষ্টা করছেন?"। প্রতিটি আবার এবং আবার, আমি একটি স্ট্রিং বা অন্য বস্তু নিপূণভাবে প্রয়োজন আছে। একটি ফাংশন কল করতে এই পরিবর্তনের পরিবর্তে, আমি এটি একটি পদ্ধতি হিসাবে এটি কল ভাল মনে হবে। আমি বর্তমানে Asp.net ওয়েব অ্যাপ্লিকেশন writting করছি এবং আমি সেখানে Asp.net 3.x এখনও মনে করি না, তাই আমি এখন জন্য অপেক্ষা করতে হবে। কিন্তু আপনার উত্তরের জন্য ধন্যবাদ।
যোগ লেখক GateKiller, উৎস

আপনি C# এর এক্সটেনশান পদ্ধতি সম্পর্কে কথা বলছেন বলে মনে হচ্ছে। আপনি প্রথম প্যারামিটারের আগে "এই" শব্দটি ঢোকাতে বিদ্যমান শ্রেণীর কার্যকারিতা যোগ করুন। পদ্ধতি একটি স্ট্যাটিক বর্গ একটি স্ট্যাটিক পদ্ধতি হতে হবে। নেট এ স্ট্রিং ইতিমধ্যে একটি "তিরস্কার" পদ্ধতি আছে, তাই আমি অন্য একটি উদাহরণ ব্যবহার করব।

public static class MyStringEtensions
{
    public static bool ContainsMabster(this string s)
    {
        return s.Contains("Mabster");
    }
}

তাই এখন প্রতিটি স্ট্রিং একটি অত্যন্ত দরকারী ContainsMabster পদ্ধতি আছে, যা আমি এই মত ব্যবহার করতে পারেন:

if ("Why hello there, Mabster!".ContainsMabster()) { /* ... */ }

লক্ষ্য করুন যে আপনি ইন্টারফেসগুলিতে এক্সটেনশন পদ্ধতিগুলিও যোগ করতে পারেন (উদাহরণস্বরূপ, এলিস্ট), যার অর্থ হচ্ছে যে কোনও ধরণের ইন্টারফেস প্রয়োগ করা যেকোন স্টপটিও নতুন পদ্ধতি গ্রহণ করবে।

এক্সটেনশন পদ্ধতিতে ঘোষিত কোন অতিরিক্ত পরামিতি (প্রথম "এই" প্যারামিটারের পরে) সাধারণ প্যারামিটার হিসাবে বিবেচিত হয়।

0
যোগ

আপনি একটি এক্সটেনশন পদ্ধতি তৈরি করতে হবে, যা .NET 3.5 এর প্রয়োজন। একটি স্ট্যাটিক ক্লাসে পদ্ধতি স্ট্যাটিক হতে হবে। পদ্ধতির প্রথম প্যারামিটারটি "স্বাক্ষর" এর সাথে প্রিফিক্স করা প্রয়োজন।

public static string MyMethod(this string input)
{
    // do things
}

আপনি তারপর এটি মত কল করতে পারেন

"asdfas".MyMethod();
0
যোগ