জাভাতে আমি যে পদ্ধতি ব্যবহার করে তা পরিবর্তন করে এমন কিছু পদ্ধতির অনুরোধ করার পরে অ্যারের সামগ্রীগুলি মুদ্রণ করার চেষ্টা করছি:
System.out.print(Arrays.toString(alg.id));
আমি সি # এ কিভাবে করব?
জাভাতে আমি যে পদ্ধতি ব্যবহার করে তা পরিবর্তন করে এমন কিছু পদ্ধতির অনুরোধ করার পরে অ্যারের সামগ্রীগুলি মুদ্রণ করার চেষ্টা করছি:
System.out.print(Arrays.toString(alg.id));
আমি সি # এ কিভাবে করব?
উত্তর:
আপনি এটি চেষ্টা করতে পারেন:
foreach(var item in yourArray)
{
Console.WriteLine(item.ToString());
}
এছাড়াও আপনি এই জাতীয় কিছু চেষ্টা করতে পারেন:
yourArray.ToList().ForEach(i => Console.WriteLine(i.ToString()));
সম্পাদনা: এক লাইনে আউটপুট পেতে [আপনার মন্তব্যের ভিত্তিতে]:
Console.WriteLine("[{0}]", string.Join(", ", yourArray));
//output style: [8, 1, 8, 8, 4, 8, 6, 8, 8, 8]
সম্পাদনা (2019): অন্যান্য উত্তরে যেমন উল্লেখ করা হয়েছে তবে Array.ForEach<T>
পদ্ধতি ব্যবহার করা আরও ভাল এবং ToList
পদক্ষেপটি করার দরকার নেই ।
Array.ForEach(yourArray, Console.WriteLine);
ToString
ব্যবস্থার সাথে একটি কাস্টম শ্রেণি হয় ।
ForEach
পদ্ধতির ব্যবহার: expected.ToList().ForEach(Console.WriteLine);
আপনি একটি পদ্ধতি রেফারেন্স এর পরিবর্তে একটি ল্যামডা যে একটি নতুন বেহুদা বেনামী পদ্ধতি তৈরি করবে এর ব্যবহার করতে পারে।
ToList
কেবল ForEach
পদ্ধতিটি ব্যবহারের জন্য একটি তালিকা তৈরি করা একটি ভয়ঙ্কর অনুশীলন আইএমএইচও।
এটি করার অনেকগুলি উপায় রয়েছে, অন্যান্য উত্তরগুলি ভাল, এখানে একটি বিকল্প রয়েছে:
Console.WriteLine(string.Join("\n", myArrayOfObjects));
ToString()
এবং সেখানে বিন্যাসটি পরিচালনা করতে পারেন । var a = new [] { "Admin", "Peon" };_log.LogDebug($"Supplied roles are '{string.Join(", ", a)}'.");
কর্মক্ষেত্রে কিছুটা ডাউনটাইম থাকার কারণে, আমি এখানে পোস্ট করা বিভিন্ন পদ্ধতির গতি পরীক্ষা করার সিদ্ধান্ত নিয়েছি।
এই আমি ব্যবহার চারটি পদ্ধতি।
static void Print1(string[] toPrint)
{
foreach(string s in toPrint)
{
Console.Write(s);
}
}
static void Print2(string[] toPrint)
{
toPrint.ToList().ForEach(Console.Write);
}
static void Print3(string[] toPrint)
{
Console.WriteLine(string.Join("", toPrint));
}
static void Print4(string[] toPrint)
{
Array.ForEach(toPrint, Console.Write);
}
ফলাফলগুলো নিম্নে প্রদর্শিত হল:
Strings per trial: 10000
Number of Trials: 100
Total Time Taken to complete: 00:01:20.5004836
Print1 Average: 484.37ms
Print2 Average: 246.29ms
Print3 Average: 70.57ms
Print4 Average: 233.81ms
সুতরাং প্রিন্ট 3 দ্রুততম, কারণ এটিতে কেবল একটি কল রয়েছে Console.WriteLine
যা মনে হয় কোনও অ্যারে মুদ্রণের গতির জন্য এটি প্রধান বাধা। মুদ্রণ 4 প্রিন্ট 2 এর তুলনায় কিছুটা দ্রুত এবং মুদ্রণ 1 হ'ল সকলের চেয়ে ধীরতম।
আমি মনে করি যে প্রিন্ট 3 দ্রুত হওয়া সত্ত্বেও প্রিন্ট 4 সম্ভবত আমি পরীক্ষিত 4 টির মধ্যে সবচেয়ে বহুমুখী।
যদি আমি কোনও ত্রুটি করি তবে নির্দ্বিধায় আমাকে সেগুলি জানাতে / আপনার নিজের থেকে ঠিক করতে দিন!
সম্পাদনা: আমি নিচের উত্পন্ন আইএল যুক্ত করছি
g__Print10_0://Print1
IL_0000: ldarg.0
IL_0001: stloc.0
IL_0002: ldc.i4.0
IL_0003: stloc.1
IL_0004: br.s IL_0012
IL_0006: ldloc.0
IL_0007: ldloc.1
IL_0008: ldelem.ref
IL_0009: call System.Console.Write
IL_000E: ldloc.1
IL_000F: ldc.i4.1
IL_0010: add
IL_0011: stloc.1
IL_0012: ldloc.1
IL_0013: ldloc.0
IL_0014: ldlen
IL_0015: conv.i4
IL_0016: blt.s IL_0006
IL_0018: ret
g__Print20_1://Print2
IL_0000: ldarg.0
IL_0001: call System.Linq.Enumerable.ToList<String>
IL_0006: ldnull
IL_0007: ldftn System.Console.Write
IL_000D: newobj System.Action<System.String>..ctor
IL_0012: callvirt System.Collections.Generic.List<System.String>.ForEach
IL_0017: ret
g__Print30_2://Print3
IL_0000: ldstr ""
IL_0005: ldarg.0
IL_0006: call System.String.Join
IL_000B: call System.Console.WriteLine
IL_0010: ret
g__Print40_3://Print4
IL_0000: ldarg.0
IL_0001: ldnull
IL_0002: ldftn System.Console.Write
IL_0008: newobj System.Action<System.String>..ctor
IL_000D: call System.Array.ForEach<String>
IL_0012: ret
ক্লাসের Array.ForEach<T> Method (T[], Action<T>)
পদ্ধতি নিয়ে আরেকটি পন্থাArray
Array.ForEach(myArray, Console.WriteLine);
এটির তুলনায় কেবল একটি পুনরাবৃত্তি array.ToList().ForEach(Console.WriteLine)
লাগে যা দুটি পুনরাবৃত্তি গ্রহণ করে এবং অভ্যন্তরীণভাবে List
(ডাবল পুনরাবৃত্তি রানটাইম এবং ডাবল মেমরি গ্রহণের জন্য) জন্য একটি দ্বিতীয় অ্যারে তৈরি করে
সি # তে আপনি প্রতিটি উপাদান অ্যারে মুদ্রণ করে লুপ করতে পারেন। নোট করুন যে System.Object একটি পদ্ধতি ToString () সংজ্ঞায়িত করে। সিস্টেম.অবজেক্ট () থেকে প্রাপ্ত যে কোনও প্রদত্ত প্রকার এটিকে ওভাররাইড করতে পারে।
একটি স্ট্রিং প্রদান করে যা বর্তমান অবজেক্টকে উপস্থাপন করে।
http://msdn.microsoft.com/en-us/library/system.object.tostring.aspx
ডিফল্টরূপে অবজেক্টের পুরো প্রকারের নাম মুদ্রণ করা হবে, যদিও অনেকগুলি অন্তর্নির্মিত প্রকারগুলি আরও অর্থবহী ফলাফল মুদ্রণের জন্য সেই ডিফল্টটিকে ওভাররাইড করে। অর্থবহ আউটপুট সরবরাহ করতে আপনি নিজের নিজের অবজেক্টে টসস্ট্রিং () ওভাররাইড করতে পারেন।
foreach (var item in myArray)
{
Console.WriteLine(item.ToString()); // Assumes a console application
}
যদি আপনার নিজস্ব ক্লাস ফু থাকে তবে আপনি টসস্ট্রিং () এর মতো ওভাররাইড করতে পারেন:
public class Foo
{
public override string ToString()
{
return "This is a formatted specific for the class Foo.";
}
}
সি # 6.0 থেকে শুরু করে , যখন $ - স্ট্রিং ইন্টারপোলেশন চালু করা হয়েছে, আরও একটি উপায় আছে:
var array = new[] { "A", "B", "C" };
Console.WriteLine($"{string.Join(", ", array}");
//output
A, B, C
সংযুক্তকরণ ব্যবহার সংরক্ষন করা যায়নি System.Linq
রূপান্তর string[]
করতে char[]
হবে এবং একটি হিসাবে মুদ্রণstring
var array = new[] { "A", "B", "C" };
Console.WriteLine($"{new String(array.SelectMany(_ => _).ToArray())}");
//output
ABC
আপনি যদি সুন্দর পেতে চান তবে আপনি একটি এক্সটেনশন পদ্ধতি লিখতে IEnumerable<object>
পারেন যা কনসোলে একটি অনুক্রম লিখেছিল । এটি যে কোনও প্রকারের গণনার সাথে কাজ করবে, কারণ IEnumerable<T>
এটি টি তে সমবায়:
using System;
using System.Collections.Generic;
namespace Demo
{
internal static class Program
{
private static void Main(string[] args)
{
string[] array = new []{"One", "Two", "Three", "Four"};
array.Print();
Console.WriteLine();
object[] objArray = new object[] {"One", 2, 3.3, TimeSpan.FromDays(4), '5', 6.6f, 7.7m};
objArray.Print();
}
}
public static class MyEnumerableExt
{
public static void Print(this IEnumerable<object> @this)
{
foreach (var obj in @this)
Console.WriteLine(obj);
}
}
}
(আমি মনে করি না আপনি এটি পরীক্ষার কোড ব্যতীত অন্যটি ব্যবহার করবেন d)
আমি ম্যাথু ওয়াটসনের দ্বারা এক্সটেনশন পদ্ধতির উত্তরটি উন্নত করেছিলাম, তবে আপনি পাইথন থেকে আগত / মাইগ্রেশন করে যদি আসেন, আপনি এই জাতীয় পদ্ধতিটি দরকারী দেখতে পাবেন:
class Utils
{
static void dump<T>(IEnumerable<T> list, string glue="\n")
{
Console.WriteLine(string.Join(glue, list.Select(x => x.ToString())));
}
}
-> এটি সরবরাহকারী বিভাজক ব্যবহার করে যে কোনও সংগ্রহ মুদ্রণ করবে। এটি বেশ সীমাবদ্ধ (নেস্টেড সংগ্রহ?)।
কোনও স্ক্রিপ্টের জন্য (যেমন একটি সি # কনসোল অ্যাপ্লিকেশন যাতে কেবল প্রোগ্রামডস থাকে এবং বেশিরভাগ ক্ষেত্রে ঘটে থাকে Program.Main
) - এটি ঠিক ঠিক হতে পারে।
এটি সহজতম উপায় যা আপনি অ্যারে ব্যবহার করে স্ট্রিংটি মুদ্রণ করতে পারবেন !!!
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace arraypracticeforstring
{
class Program
{
static void Main(string[] args)
{
string[] arr = new string[3] { "Snehal", "Janki", "Thakkar" };
foreach (string item in arr)
{
Console.WriteLine(item.ToString());
}
Console.ReadLine();
}
}
}
যদি এটি স্ট্রিংগুলির একটি অ্যারে হয় তবে আপনি সমষ্টিটি ব্যবহার করতে পারেন
var array = new string[] { "A", "B", "C", "D"};
Console.WriteLine(array.Aggregate((result, next) => $"{result}, {next}")); // A, B, C, D
আপনি যেমন পরামিতি ক্রম পরিবর্তন করে অর্ডার বিপরীত করতে পারেন
Console.WriteLine(array.Aggregate((result, next) => $"{next}, {result}")); // D, C, B, A
আপনি লুপ জন্য ব্যবহার করতে পারেন
int[] random_numbers = {10, 30, 44, 21, 51, 21, 61, 24, 14}
int array_length = random_numbers.Length;
for (int i = 0; i < array_length; i++){
if(i == array_length - 1){
Console.Write($"{random_numbers[i]}\n");
} else{
Console.Write($"{random_numbers[i]}, ");
}
}
আপনি যদি অ্যারে ফাংশনটি ব্যবহার করতে না চান।
public class GArray
{
int[] mainArray;
int index;
int i = 0;
public GArray()
{
index = 0;
mainArray = new int[4];
}
public void add(int addValue)
{
if (index == mainArray.Length)
{
int newSize = index * 2;
int[] temp = new int[newSize];
for (int i = 0; i < mainArray.Length; i++)
{
temp[i] = mainArray[i];
}
mainArray = temp;
}
mainArray[index] = addValue;
index++;
}
public void print()
{
for (int i = 0; i < index; i++)
{
Console.WriteLine(mainArray[i]);
}
}
}
class Program
{
static void Main(string[] args)
{
GArray myArray = new GArray();
myArray.add(1);
myArray.add(2);
myArray.add(3);
myArray.add(4);
myArray.add(5);
myArray.add(6);
myArray.print();
Console.ReadKey();
}
}