2012-12-22 13 views
7

mam natknąć na kilka sposobów, aby napisać logikę biznesową w asp.net, ale zastanawiam się na przykład 2 poniżej, jakie są zalety korzystania z struct do przechowywania zmiennych Klasa:Biznes klasa logika

namespace Shopping 
{ 
    public struct ShoppingCart 
    { 
     public string Color; 
     public int ProductId; 
    } 

    public partial class MyShoppingCart 
    { 

     public decimal GetTotal(string cartID) 
     { 
     } 

     // Some other methods ... 
    } 
} 

namespace Shopping 
{ 
    public partial class MyShoppingCart 
    { 
     public string Color{ get; set; } 
     public int ProductId{ get; set; } 

     public decimal GetTotal(string cartID) 
     { 
     } 

     // Some other methods ... 
    } 
} 

Odpowiedz

5

Jak dsimcha stanach their answer here:

Kiedy nie trzeba polimorfizm, chcesz semantykę wartości i chcą do unikaj alokacji sterty i związanego z nią zbierania śmieci narzut. Jednakże zastrzeżenie jest takie, że konstrukcje (arbitralnie duże) są o wiele droższe do przejścia niż odniesienia klasowe (zwykle jedno słowo maszynowe ), więc klasy mogą w praktyce okazać się szybsze.

Jak stwierdza JoshBerke w his answer here:

Użyj struct kiedy chcesz semantykę wartości w porównaniu do referencyjnych semantykę.

Z http://msdn.microsoft.com/en-us/library/ms228593.aspx

1,7 elemencie

Jak klas, kodowanym są struktury danych, które mogą zawierać dane członków i funkcji, ale w przeciwieństwie do klas, kodowanym są wartości rodzaje i nie wymagają przydziału sterty. Zmienna typu struct bezpośrednio przechowuje dane struktury, podczas gdy zmienna typu klasy przechowuje odwołanie do dynamicznie przydzielanego obiektu. Typy Struct nie obsługują dziedziczenia określonego przez użytkownika, a wszystkie typy struktur niejawnie dziedziczą z obiektu typu.

Struktury są szczególnie przydatne dla małych struktur danych, które mają semantykę wartości . Liczby zespolone, punkty w układzie współrzędnych lub pary klucz-wartość o wartości w słowniku są dobrymi przykładami struktur. Zastosowanie klas, a nie klas dla małych struktur danych, może spowodować, że ma dużą różnicę w liczbie przydziału pamięci, jaką wykonuje aplikacja. Na przykład poniższy program tworzy i inicjuje tablicę 100 punktów. Z Point zaimplementowanym jako klasa, 101 tworzone są oddzielne obiekty - jeden dla tablicy i jeden dla każdego z nich dla dla 100 elementów.

+0

Dzięki za jasne wyjaśnienie. – k80sg

+10

Plagiat - pierwszy akapit jest kopiowany hurtowo z [Kiedy używać struct w C#?] (Http://stackoverflow.com/q/521298) –

+4

Nawet przy wszystkich edycjach, wciąż nie ma * oryginalnego * materiału tutaj w ogóle . – jmort253