c# - ¿Las propiedades estáticas implementadas automáticamente en C # son seguras para subprocesos?



3 Answers

La sección 10.7.4 de la especificación C # establece:

Cuando una propiedad se especifica como una propiedad implementada automáticamente, un campo de respaldo oculto está automáticamente disponible para la propiedad, y los accesores se implementan para leer y escribir en ese campo de respaldo. El siguiente ejemplo:

public class Point {
  public int X { get; set; } // automatically implemented
  public int Y { get; set; } // automatically implemented
}

Es equivalente a la siguiente declaración:

public class Point {
  private int x;
  private int y;
  public int X { get { return x; } set { x = value; } }
  public int Y { get { return y; } set { y = value; } }
}

Eso es lo que prometemos, y eso es lo que obtienes. El punto de las propiedades automáticas es hacer lo más básico, simple y barato; Si desea hacer algo más sofisticado, debe escribir una propiedad "real".

c# static thread-safety properties automatic-properties

Me gustaría saber si C # implementó automáticamente las propiedades, como public static T Prop { get; set; } public static T Prop { get; set; } public static T Prop { get; set; } , son seguros para subprocesos o no. ¡Gracias!




No lo creo Creo que son solo azúcar sintáctica para:

private static T _prop;
public static T Prop
{
    get { return _prop; }
    set { _prop = value; }
}



Para completar, los eventos tipo campo tienen una seguridad de subprocesos integrada, pero están solos en esto. Las propiedades implementadas automáticamente no tienen tales características. Sin embargo, puedes hacer algo como:

public static double SomeProp
{   // ### NOT RECOMMENDED ###
    [MethodImpl(MethodImplOptions.Synchronized)] get;
    [MethodImpl(MethodImplOptions.Synchronized)] set;
}

El problema con esto es que bloqueará el Type , lo cual es algo malo . Yo implementaría mi propia sincronización para esto, personalmente.




Related