2012-03-17 25 views
9

Dersim Customer yapıyorum o vardır aşağıdaki veri üyeleri ve özellikleri:Bir dizi veri üyesi için tanım ve ayar nasıl tanımlanır?

private string customerName; 
private double[] totalPurchasesLastThreeDays; //array of 3 elements that will hold the totals of how much the customer purchased for the past three days i.e. element[0] = 100, element[1] = 50, element[2] = 250 

public string CustomerName 
{ 
get { return customerName; } 
set { customerName = value; } 
} 

public double[] TotalPurchasesLastThreeDays 
{ 
? 
} 

nasıl get tanımlamak ve dizi veri üyesi için ayarlarım?

Bir otomatik özelliği kullanabilirsiniz
+0

Tam olarak aynı şekilde. – Vache

+0

Müşteri sınıfının kendisinin bir parçası olarak alımları dahil etmek bana tuhaf geliyor. –

cevap

10

:

public class Customer 
{ 
    public string CustomerName { get; set; } 

    public double[] TotalPurchasesLastThreeDays { get; set; } 
} 

Veya istersen:

public class Customer 
    { 
     private double[] totalPurchasesLastThreeDays; 

     public string CustomerName { get; set; } 

     public double[] TotalPurchasesLastThreeDays 
     { 
      get 
      { 
       return totalPurchasesLastThreeDays; 
      } 
      set 
      { 
       totalPurchasesLastThreeDays = value; 
      } 
     } 
    } 

Sonra yapıcı içinde, bazı varsayılan değerler ayarlayabilirsiniz:

public Customer() 
{ 
    totalPurchasesLastThreeDays = new double[] { 100, 50, 250 }; 
} 
1
public double[] TotalPurchasesLastThreeDays 
{ 
get 
{ 
    return totalPurchasesLastThreeDays; 
} 
set 
{ 
    totalPurchasesLastThreeDays = value; 
} 
} 
2

Dizinin yerleşmesini isterseniz

public double[] TotalPurchasesLastThreeDays { get; set; } 
1
public double[] TotalPurchasesLastThreeDays 
{ 
get 

    { 
    return totalPurchasesLastThreeDays; 
    } 

set 

{ 
totalPurchasesLastThreeDays=value; 
} 
} 
21

Bir indexer istiyorsunuz: zaten dışarıdan en uygun gelen yetenekli bir otomobil özelliğini kullanın ve sadece zaten var özel alanı kaldırmak için mi?

public double this[int i] { 
    get { return totalPurchasesLastThreeDays[i]; } 
    set { totalPurchasesLastThreeDays[i] = value; } 
} 

aksi soru zaten kodunda bir özellik uygulanan ve açıkçası bunu yaparken yeteneğine sahip olduğu göz önüne alındığında, biraz tuhaf geliyor çünkü.

+0

+1 Güzel :) Dizincileri unuttum. –

+4

Dizinleyicilerin adı doğrudan olduğundan, dizinleyicilerin adı yoktur. Yani kodunuzu derlemek için 'Alımlar'ı kaldırmalısınız.Aslında, dizinleyiciler şu şekilde çalışır: 'myCustomer [index]', bu şekilde değil: 'myCustomer.Purchases [index]' – digEmAll

+0

Düzenlemekte çekinmeyin. Her seferinde sözdizimi aramak zorundayım. – Joey

2

bu olurdu bir yolu, (dizi artık ayarlandıktan sonra değiştirilebilir, böylece bu noktaya assuming olan):

public double[] TotalPurchasesLastThreeDays 
{ 
    get { 
     return totalPurchasesLastThreeDays; 
    } 
    set { 
     totalPurchasesLastThreeDays = (double[])value.Clone(); 
    } 
} 

Ama ... Eğer gerçekten yapmak istiyorsunuz o? Genelde yaptığınız gibi aynı şeyi yapmak daha kullanışlı ve sezgisel olabilir.

1

Kendinize bu soruyu soruyor olabilirsiniz çünkü dizinize atamanın normal değişkenlerden farklı olduğunu düşünüyor musunuz?

Bu durumda, TotalPurchasesLastThreeDays[3] = 14.0 numaralı telefonu aradığınızda ayarlayıcıyı değil, alıcıyı kullandığınızı fark etmeniz gerekir. Setter, içerdiği değerleri değil, dizinin kendisini değiştirmek için kullanılır. Dolayısıyla, alıcıyı ve ayarlayıcıyı kodlamak, başka bir değişken türünden daha diziden farklı değildir.

1

Buna izin vermek isterseniz:

myCustomer.TotalPurchasesLastThreeDays[2] = 3.1415; 
var foo = myCustomer.TotalPurchasesLastThreeDays[1]; 

ancak bu: Değiştirmek gerekiyorsa, yerine

public double[] TotalPurchasesLastThreeDays 
{ 
    get { return this.totalPurchasesLastThreeDays; } 
} 

:

myCustomer.TotalPurchasesLastThreeDays = new Customer[]{ ... }; 

sadece gaz giderici ie tanımla sınıfın dışından dizi örneği, sadece diğer cevapları takip edin.

İlgili konular