সি # তে অনুমানযোগ্য <স্ট্রিং> শুরু করা হচ্ছে


115

আমার এই জিনিসটি রয়েছে:

IEnumerable<string> m_oEnum = null;

এবং আমি এটি শুরু করতে চাই দিয়ে চেষ্টা করেছেন

IEnumerable<string> m_oEnum = new IEnumerable<string>() { "1", "2", "3"};

তবে এটি বলে যে "স্ট্রিম অ্যাড করার জন্য আইনিম্যারেবল কোনও পদ্ধতি ধারণ করে না Any কোনও ধারণা? ধন্যবাদ

উত্তর:


181

ঠিক আছে, উত্তর যোগ বিবৃত হতে পারেন এছাড়াও খুঁজছেন

IEnumerable<string> m_oEnum = Enumerable.Empty<string>();

অথবা

IEnumerable<string> m_oEnum = new string[]{};

4
এখন পুরানো, তবে আমি দ্বিতীয় বিকল্পটি এড়াতে চাই। অ্যারেগুলির সাথে সামঞ্জস্যপূর্ণ নয় এমন অন্যান্য IEnumerables এর সাথে আপনি ইন্টারঅ্যাক্ট করতে চান।
— জোয়েল কোহোর্ন

92

IEnumerable<T>একটি ইন্টারফেস। আপনাকে একটি কংক্রিটের ধরণের (যা প্রয়োগ করে IEnumerable<T>) শুরু করতে হবে। উদাহরণ:

IEnumerable<string> m_oEnum = new List<string>() { "1", "2", "3"};


18

IEnumerable এটি কেবল একটি ইন্টারফেস এবং তাই সরাসরি ইনস্ট্যান্ট করা যায় না can't

আপনাকে একটি কংক্রিট শ্রেণি তৈরি করতে হবে (যেমন List)

IEnumerable<string> m_oEnum = new List<string>() { "1", "2", "3" };

তারপরে আপনি এটি প্রত্যাশিত যে কোনও কিছুতে পাস করতে পারেন IEnumerable।


13
public static IEnumerable<string> GetData()
{
    yield return "1";
    yield return "2";
    yield return "3";
}

IEnumerable<string> m_oEnum = GetData();

8
যদিও সামান্য ওভারকিল, ফলন ব্যবহারের জন্য +1
— অ্যাড্রিয়ানো কার্নেরিও

1
ছড়াটির জন্য @ অ্যাড্রিয়ান কার্নেইরো +1
— মার্গন

6

আপনি কোনও ইন্টারফেসটি ইনস্ট্যান্ট করতে পারবেন না - আপনাকে অবশ্যই সংখ্যার একটি কংক্রিট বাস্তবায়ন সরবরাহ করতে হবে।


1

আপনি একটি স্থিতিশীল পদ্ধতি তৈরি করতে পারেন যা পছন্দসইভাবে এই পরিমাণে ফিরে আসবে:

public static IEnumerable<T> CreateEnumerable<T>(params T[] values) =>
    values;
//And then use it
IEnumerable<string> myStrings = CreateEnumerable("first item", "second item");//etc..

বিকল্পভাবে কেবল করুন:

IEnumerable<string> myStrings = new []{ "first item", "second item"};
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.