Giriş
Bu sınıf array olarak kullanılan tüm sınıfların atasıdır. Derleyici otomatik olarak kodladığımız dizileri bu sınıftan kalıtır. Yani şöyle yaparsak bu sınıftan kalıtan bir nesne elde ederiz.
Eğer array'i ilklendirerek kullanırsak derleyici array'in tipini anlayabilir. Şöyle yaparız. Bu durumda new anahtar kelimesinden sonra int yazmaya gerek yoktur.
Şöyledir.
Bu sınıf Serializable özelliğini destekler. Şöyle yaparız.
String olarak dolu diziyi null ile doldurur.
Şöyle yaparız. Tek boyutlu bir 2 eleman büyüklüğünde dizi yaratır.
Nesneleri dönüştürüp yeni bir array döner.
Örnek
Elimizde iki dizi olsun.
Elimizde şöyle bir dizi olsun.
Şöyle yaparız.
Belirtilen indeksten başlayarak belirtilen sayı kadar diğer diziye kopyalama yapar. Şöyle yaparız.
Belirtilen indeksten başlayarak diğer diziye kopyalama yapar.
Şöyle yaparız. Başka bir array döner.
Örnek
Şöyle yaparız.
Eğer son değeri bulmak istersek şöyle yaparız.
Resize metodu
Açıklaması şöyle
Diziyi ters çevirir. Girdi olarak verilen dizi değiştirilir. Şöyle yaparız.
Şöyle yaparız.
Array çok kolay List nesnesine çevrilebilir.
jagged Array Tanımlama
Açıklaması şöyle.
Aynı şeyi Java'da şöyle yaparız.
Bu sınıf array olarak kullanılan tüm sınıfların atasıdır. Derleyici otomatik olarak kodladığımız dizileri bu sınıftan kalıtır. Yani şöyle yaparsak bu sınıftan kalıtan bir nesne elde ederiz.
new string[10]
Array TipiEğer array'i ilklendirerek kullanırsak derleyici array'in tipini anlayabilir. Şöyle yaparız. Bu durumda new anahtar kelimesinden sonra int yazmaya gerek yoktur.
int[] num1 = new [] {1, 2, 3, 4};
Eğer array'i ilkendirmiyorsak new kelimesinden sonra int yazmak gerekir. Şöyle yaparız.int[] num = new int[5];
Kalıtım ve Attribute'larŞöyledir.
[SerializableAttribute]
[ComVisibleAttribute(true)]
public abstract class Array : ICloneable, IList, ICollection,
IEnumerable, IStructuralComparable, IStructuralEquatable
SerializableAttributeBu sınıf Serializable özelliğini destekler. Şöyle yaparız.
Console.WriteLine (new string[0].GetType().IsSerializable);
Çıktı olarak şunu alırızTrue
Aynı şeyi görmek için şöyle yaparız. GetCustomAttributes(false) ile bizim eklemediğimiz özellikleri alırız.foreach (var a in typeof(string[]).GetCustomAttributes(false)) {
Console.WriteLine(a); // Prints "System.SerializableAttribute"
}
Clear metoduString olarak dolu diziyi null ile doldurur.
string[] b2 = {...}
Array.Clear(b2, 0 , b2.Length);
CreateInstance metoduŞöyle yaparız. Tek boyutlu bir 2 eleman büyüklüğünde dizi yaratır.
var array = Array.CreateInstance(typeof(object), new[] { 2 }, new[] { 0 });
Console.WriteLine(array.GetType());
object[] objArray = (object[]) array; // This is fine
ConvertAll metoduNesneleri dönüştürüp yeni bir array döner.
Örnek
Elimizde iki dizi olsun.
int[] items = { 1, 2, 3, 7, 8, 9, 13, 16, 19, 23, 25, 26, 29, 31, 35, 36, 39, 45 };
int[] indices = { 1, 3, 5, 6, 7, 9 };
Şöyle yaparız.var results = Array.ConvertAll(indices, i => items[i]);
ÖrnekElimizde şöyle bir dizi olsun.
string[] lines = File.ReadAllLines("...")
Bu diziyi int dizine şöyle çeviririz.int[] result = Array.ConvertAll(lines, str => int.Parse(str));
ConstrainedCopy metoduŞöyle yaparız.
static byte[] ConcatenateBuffers(params byte[][] list)
{
int totalLen = 0;
for (int i = 0; i < list.Length; ++i)
totalLen += list[i].Length;
byte[] ret = new byte[totalLen];
int offset = 0;
for (int i = 0; i < list.Length; ++i)
{
Array.ConstrainedCopy(list[i], 0, ret, offset, list[i].Length);
offset += list[i].Length;
}
return ret;
}
Copy metoduBelirtilen indeksten başlayarak belirtilen sayı kadar diğer diziye kopyalama yapar. Şöyle yaparız.
double[] values = { 0.245, 0.24, 0.235, 0.22, 0.21, 0.20, ... };
int start = ...;
int last = ...;
int length = last - start + 1;
double[] newvalues = new double[length];
Array.Copy(values, start, newvalues, 0, length);
CopyTo metoduBelirtilen indeksten başlayarak diğer diziye kopyalama yapar.
string[] lines = ...;
if (lines.Length > 0)
{
string[] tags = new Array[lines.Length];
lines.CopyTo(tags,0);
}
FindAllŞöyle yaparız. Başka bir array döner.
int[] list = { 1, 2, 3, 4, 5 };
List<int> evenList = Array.FindAll(list, elem => elem % 2 == 0).ToList();
IndexOf metoduÖrnek
Şöyle yaparız.
double[] values = { 0.245, 0.24, 0.235, 0.22, 0.21, 0.20, ... };
double criteria = 0.75;
int start = Array.IndexOf(values, criteria);
LastIndexOf metoduEğer son değeri bulmak istersek şöyle yaparız.
int last = Array.LastIndexOf(expiry, criteria);
Length metodu
Array sınıfının büyüklüğü Length alanı ile bulunur. Diğer veriyapılarında ise büyüklüğü bulmak için Count alanı kullanılır. Array'ın farklı olduğunu belirtmek için böyle yapılmış.Resize metodu
Açıklaması şöyle
Reverse metoduIf newSize is greater than the Length of the old array, a new array is allocated and all the elements are copied from the old array to the new one.If newSize is less than the Length of the old array, a new array is allocated and elements are copied from the old array to the new one until the new one is filled; the rest of the elements in the old array are ignored.
Diziyi ters çevirir. Girdi olarak verilen dizi değiştirilir. Şöyle yaparız.
string[] text = ...
Array.Reverse(text);
// reverse supplied array
İstersek Linq ile de aynı şeyi kolayca yapabiliriz. Tek fark sonucu farklı bir dizi içinde elde etmemiz.int[] array = {1,3};
var reversedArray = array.Reverse().ToArray();
Sort metoduŞöyle yaparız.
string[] lines = ...;
Array.Sort(lines);
ToList metoduArray çok kolay List nesnesine çevrilebilir.
int[] list = { 1, 2, 3, 4, 5 };
List<int> evenList = Array.FindAll(list, elem => elem % 2 == 0).ToList();
Aynı şekilde List nesnesi Array nesnesine çok kolay çevrilebilir.Array[] ar = list.Select(x => ...).ToArray();
Diğerjagged Array Tanımlama
Açıklaması şöyle.
The elements of a jagged array can be of different dimensions and sizes.
Şöyle yaparız.
int[][] array = new int[3][n];
ArrayList<ArrayList<Integer>> seq = new ArrayList<ArrayList<Integer>>();
Örnek
İki boyutlu array'den jagged array'e dönüşüm için şöyle yaparız.
jagged array'i parametre olarak geçmek için şöyle yaparız.
İki Boyutlu Array Tanımlama
Şöyle tanımlanırİki boyutlu array'den jagged array'e dönüşüm için şöyle yaparız.
public static class ArrayExtensions
{
public static T[][] ToJagged<T>(this T[,] value)
{
T[][] result = new T[value.GetLength(0)][];
for (int i = 0; i < value.GetLength(0); ++i)
result[i] = new T[value.GetLength(1)];
for (int i = 0; i < value.GetLength(0); ++i)
for (int j = 0; j < value.GetLength(1); ++j)
result[i][j] = value[i, j];
return result;
}
}
Örnekjagged array'i parametre olarak geçmek için şöyle yaparız.
public void AddNodes(params T[][] nodes)
{
...;
}
İki Boyutlu Array Tanımlama
int[ , ] arrayName = new int[10,10];
Boyutları sonradan hesaplayıp verebilmek te mümkünpublic class Foo
{
private int[ , ] Bar; // Bar will be null until initialized
public Foo(int a, int b)
{
Bar = new int[a, b];
}
}
İki boyutlu generic array şöyle kullanılır. Bu sefer int yerine T geliyor.public sealed class Array2D<T>
{
private T[,] _fields;
//Or as property
public T[,] Fields
{
get { return _fields; }
set { _fields = value; }
}
public Array2D()
{
}
}
Array şöyle doldurulur.Array2D<int> arr = new Array2D<int> {Fields = new[,] {{1, 2}, {3, 4}, {5, 6} }};
Hiç yorum yok:
Yorum Gönder