সি # দিয়ে সম্ভব সমস্ত অ্যারে আরম্ভের সিনট্যাক্স কি?
সি # দিয়ে সম্ভব সমস্ত অ্যারে আরম্ভের সিনট্যাক্স কি?
উত্তর:
এগুলি হ'ল একটি সাধারণ অ্যারের জন্য বর্তমান ঘোষণা এবং সূচনা পদ্ধতি।
string[] array = new string[2]; // creates array of length 2, default values
string[] array = new string[] { "A", "B" }; // creates populated array of length 2
string[] array = { "A" , "B" }; // creates populated array of length 2
string[] array = new[] { "A", "B" }; // created populated array of length 2
নোট করুন যে অ্যারে প্রাপ্তির অন্যান্য কৌশল যেমন লিনক ToArray()
এক্সটেনশানগুলি বিদ্যমান IEnumerable<T>
।
এছাড়াও নোট করুন যে উপরের ঘোষণাগুলিতে, প্রথম দুটি string[]
বামদিকে var
(C # 3+) দিয়ে প্রতিস্থাপন করতে পারে , কারণ ডানদিকে থাকা তথ্যগুলি সঠিক ধরণের অনুমানের জন্য যথেষ্ট। তৃতীয় লাইনটি অবশ্যই প্রদর্শিত হিসাবে লেখা উচিত, কারণ একা অ্যারে প্রারম্ভিককরণ সিনট্যাক্স সংকলকের চাহিদা পূরণের জন্য যথেষ্ট নয়। চতুর্থটি অনুমান ব্যবহার করতে পারে। সুতরাং আপনি যদি পুরো ব্রেভিটি জিনিসটির মধ্যে থাকেন তবে উপরের হিসাবে লেখা যেতে পারে
var array = new string[2]; // creates array of length 2, default values
var array = new string[] { "A", "B" }; // creates populated array of length 2
string[] array = { "A" , "B" }; // creates populated array of length 2
var array = new[] { "A", "B" }; // created populated array of length 2
var x = {}
অ্যারে ইনিশিয়ালাইজার অ্যারে ব্যতীত অন্য কিছু উপার্জন করতে পারে তা যদি কাজ করে না তবে আমি কী তা জানি না। সুতরাং আমি অনুমান করি অ্যারে প্রারম্ভিক একটি ভাষা বৈশিষ্ট্য। আপনি যদি এটির সাথে new List<string> {"A", "B"}
এটি ব্যবহার করেন তবে ভিন্ন কিছুও পাওয়া যায়।
সি # তে অ্যারে তৈরি বাক্য গঠন যা প্রকাশ হয়:
new int[3]
new int[3] { 10, 20, 30 }
new int[] { 10, 20, 30 }
new[] { 10, 20, 30 }
প্রথমটিতে, আকারটি কোনও অ-নেতিবাচক ইন্টিগ্রাল মান হতে পারে এবং অ্যারের উপাদানগুলি ডিফল্ট মানগুলিতে আরম্ভ হয়।
দ্বিতীয়টিতে, আকারটি অবশ্যই একটি ধ্রুবক হতে হবে এবং প্রদত্ত উপাদানের সংখ্যার সাথে অবশ্যই মিল থাকতে হবে। প্রদত্ত উপাদানগুলি থেকে প্রদত্ত অ্যারে উপাদান ধরণে অবশ্যই একটি অন্তর্নিহিত রূপান্তর থাকতে হবে।
তৃতীয় একটিতে, উপাদানগুলি অবশ্যই অবশ্যই এলিমেন্টের ধরণের রূপান্তরিত হতে হবে এবং প্রদত্ত উপাদানের সংখ্যা থেকে আকার নির্ধারণ করা হবে।
চতুর্থ একটিতে অ্যারের উপাদানগুলির ধরণটি ধরণের সমস্ত প্রদত্ত উপাদানগুলির মধ্যে সেরা ধরণের, যদি একটি থাকে তবে তা নির্ধারণ করা হয়। সমস্ত উপাদান অবশ্যই প্রকারভেদে রূপান্তরিত হতে হবে। আকার প্রদত্ত উপাদানগুলির সংখ্যা থেকে নির্ধারিত হয়। এই বাক্য গঠনটি সি # 3.0 তে চালু হয়েছিল।
একটি বাক্য গঠন রয়েছে যা কেবলমাত্র একটি ঘোষণায় ব্যবহৃত হতে পারে:
int[] x = { 10, 20, 30 };
উপাদানগুলি অবশ্যই এলিমেন্টের ধরণের রূপে রূপান্তরিত হতে হবে। আকার প্রদত্ত উপাদানগুলির সংখ্যা থেকে নির্ধারিত হয়।
একটি সর্বস্তর গাইড নেই
আমি আপনাকে সি # 4.0 স্পেসিফিকেশন, বিভাগ 7.6.10.4 "অ্যারে ক্রিয়েশন এক্সপ্রেশন" উল্লেখ করি।
Array.CreateInstance(typeof(int), 3)
!
"1,2,3,4".split(',')
,।
new int[,] { { 3, 7 }, { 103, 107 }, { 10003, 10007 }, };
, এবং তাই উপর int[,,]
, int[,,,]
...
var data0 = new int[3]
var data1 = new int[3] { 1, 2, 3 }
var data2 = new int[] { 1, 2, 3 }
var data3 = new[] { 1, 2, 3 }
var data4 = { 1, 2, 3 }
সংকলনযোগ্য নয়। int[] data5 = { 1, 2, 3 }
পরিবর্তে ব্যবহার করুন।
var data6 = new int[0]
var data7 = new int[] { }
var data8 = new [] { }
এবং int[] data9 = new [] { }
সংকলনযোগ্য নয়।
var data10 = { }
সংকলনযোগ্য নয়। int[] data11 = { }
পরিবর্তে ব্যবহার করুন।
var
কীওয়ার্ডের সাথে বরাদ্দ করা যেতে পারে কেবল এমন বাক্যগুলি আর্গুমেন্ট হিসাবে পাস করা যেতে পারে।
Foo(new int[2])
Foo(new int[2] { 1, 2 })
Foo(new int[] { 1, 2 })
Foo(new[] { 1, 2 })
Foo({ 1, 2 })
সংকলনযোগ্য নয় Foo(new int[0])
Foo(new int[] { })
Foo({})
সংকলনযোগ্য নয়Enumerable.Repeat(String.Empty, count).ToArray()
'গণনা' বারবার খালি স্ট্রিংগুলির অ্যারে তৈরি করবে। আপনি যদি একই বিশেষ বিশেষ ডিফল্ট উপাদানের সাথে অ্যারে শুরু করতে চান তবে। রেফারেন্স প্রকারের সাথে যত্নশীল, সমস্ত উপাদান একই বস্তুকে রেফার করবে।
var arr1 = Enumerable.Repeat(new object(), 10).ToArray();
আপনি একই বস্তুর জন্য 10 রেফারেন্স পাবেন get 10 টি স্বতন্ত্র অবজেক্ট তৈরি করতে আপনি ব্যবহার করতে পারেন var arr2 = Enumerable.Repeat(/* dummy: */ false, 10).Select(x => new object()).ToArray();
বা অনুরূপ করতে পারেন ।
var contacts = new[]
{
new
{
Name = " Eugene Zabokritski",
PhoneNumbers = new[] { "206-555-0108", "425-555-0001" }
},
new
{
Name = " Hanying Feng",
PhoneNumbers = new[] { "650-555-0199" }
}
};
আপনি যদি প্রাক-প্রাথমিক সমতুল্য (অ- null
বা অন্য কোনও default
) উপাদানগুলির একটি নির্দিষ্ট অ্যারে শুরু করতে চান তবে এটি ব্যবহার করুন:
var array = Enumerable.Repeat(string.Empty, 37).ToArray();
এছাড়াও এই আলোচনায় অংশ নিন ।
নীচে বর্গ সংজ্ঞা দেওয়া আছে।
public class DummyUser
{
public string email { get; set; }
public string language { get; set; }
}
এইভাবে আপনি অ্যারে শুরু করতে পারেন:
private DummyUser[] arrDummyUser = new DummyUser[]
{
new DummyUser{
email = "abc.xyz@email.com",
language = "English"
},
new DummyUser{
email = "def@email.com",
language = "Spanish"
}
};
লিনকিউ ছাড়াই পুনরাবৃত্তি করুন :
float[] floats = System.Array.ConvertAll(new float[16], v => 1.0f);
int[] array = new int[4];
array[0] = 10;
array[1] = 20;
array[2] = 30;
অথবা
string[] week = new string[] {"Sunday","Monday","Tuesday"};
অথবা
string[] array = { "Sunday" , "Monday" };
এবং বহু মাত্রিক অ্যারে
Dim i, j As Integer
Dim strArr(1, 2) As String
strArr(0, 0) = "First (0,0)"
strArr(0, 1) = "Second (0,1)"
strArr(1, 0) = "Third (1,0)"
strArr(1, 1) = "Fourth (1,1)"
For Class initialization:
var page1 = new Class1();
var page2 = new Class2();
var pages = new UIViewController[] { page1, page2 };
অবজেক্টের অ্যারে তৈরি এবং আরম্ভ করার আরেকটি উপায়। এটি @ আমল উপরের পোস্টের উদাহরণের সাথে মিলে যায় , বাদে এটি নির্মাণকারী ব্যবহার করে। পলিমারফিজমের একটি ড্যাশ ছড়িয়ে পড়েছে, আমি প্রতিরোধ করতে পারিনি।
IUser[] userArray = new IUser[]
{
new DummyUser("abc@cde.edu", "Gibberish"),
new SmartyUser("pga@lna.it", "Italian", "Engineer")
};
প্রসঙ্গে ক্লাস:
interface IUser
{
string EMail { get; } // immutable, so get only an no set
string Language { get; }
}
public class DummyUser : IUser
{
public DummyUser(string email, string language)
{
m_email = email;
m_language = language;
}
private string m_email;
public string EMail
{
get { return m_email; }
}
private string m_language;
public string Language
{
get { return m_language; }
}
}
public class SmartyUser : IUser
{
public SmartyUser(string email, string language, string occupation)
{
m_email = email;
m_language = language;
m_occupation = occupation;
}
private string m_email;
public string EMail
{
get { return m_email; }
}
private string m_language;
public string Language
{
get { return m_language; }
}
private string m_occupation;
}
নীচের শ্রেণীর জন্য:
public class Page
{
private string data;
public Page()
{
}
public Page(string data)
{
this.Data = data;
}
public string Data
{
get
{
return this.data;
}
set
{
this.data = value;
}
}
}
আপনি নীচের হিসাবে উপরের বস্তুর অ্যারে শুরু করতে পারেন।
Pages = new Page[] { new Page("a string") };
আশাকরি এটা সাহায্য করবে.
আপনি গতিশীল অ্যারেও তৈরি করতে পারেন অর্থাৎ আপনি অ্যারের তৈরির আগে প্রথমে অ্যারের আকারটি জিজ্ঞাসা করতে পারেন।
Console.Write("Enter size of array");
int n = Convert.ToInt16(Console.ReadLine());
int[] dynamicSizedArray= new int[n]; // Here we have created an array of size n
Console.WriteLine("Input Elements");
for(int i=0;i<n;i++)
{
dynamicSizedArray[i] = Convert.ToInt32(Console.ReadLine());
}
Console.WriteLine("Elements of array are :");
foreach (int i in dynamicSizedArray)
{
Console.WriteLine(i);
}
Console.ReadKey();
অভিব্যক্তি সহ তুচ্ছ সমাধান। মনে রাখবেন যে NewArrayInit এর সাহায্যে আপনি কেবলমাত্র এক-মাত্রিক অ্যারে তৈরি করতে পারেন।
NewArrayExpression expr = Expression.NewArrayInit(typeof(int), new[] { Expression.Constant(2), Expression.Constant(3) });
int[] array = Expression.Lambda<Func<int[]>>(expr).Compile()(); // compile and call callback
শুধু একটি নোট
নিম্নলিখিত অ্যারে:
string[] array = new string[2];
string[] array2 = new string[] { "A", "B" };
string[] array3 = { "A" , "B" };
string[] array4 = new[] { "A", "B" };
হবে কম্পাইল করুন:
string[] array = new string[2];
string[] array2 = new string[]
{
"A",
"B"
};
string[] array3 = new string[]
{
"A",
"B"
};
string[] array4 = new string[]
{
"A",
"B"
};
var
ভেরিয়েবলের জন্য বরাদ্দ করা যেতে পারে ?