C# автореализованы статические ориентированные на многопотоковое исполнение свойства?

Вы пытались просто установить тестовую версию на новую машину и посмотреть, сработает ли это? Согласно этой странице поддержки IBM ,

Действительный код авторизации продукта Авторизованного пользователя может использоваться для лицензирования до двух (2) установок продукта, используемых одним и тем же лицом. ] blockquote>

Это может относиться и к тестовым версиям, так что, возможно, вы можете просто переустановить его и продолжить. В противном случае, это никогда не повредит написанию электронной почты службы поддержки IBM с описанием вашей проблемы, поскольку передача лицензии должна быть обычной ситуацией для большинства разработчиков программного обеспечения.

23
задан bluish 28 January 2014 в 13:35
поделиться

7 ответов

Это кажется нет. Это декомпиляция с отражателем:

private static string Test
{
    [CompilerGenerated]
    get
    {
        return <Test>k__BackingField;
    }
    [CompilerGenerated]
    set
    {
        <Test>k__BackingField = value;
    }
}
15
ответ дан 29 November 2019 в 00:43
поделиться

Для полноты, в полевых событиях и встроена безопасность потоков, но в этом они одиноки. Автоматически реализованные свойства не имеют таких особенностей. Однако вы можете сделать что-то вроде:

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

Проблема в том, что он заблокирует Type, что плохо . Я бы лично реализовал для этого свою синхронизацию.

4
ответ дан 29 November 2019 в 00:43
поделиться

Я так не верю. Я верю, что они просто синтатический сахар для:

private static T _prop;
public static T Prop
{
    get { return _prop; }
    set { _prop = value; }
}
4
ответ дан 29 November 2019 в 00:43
поделиться

Нет, они не Threadsafe. Статические свойства так же уязвимы, как статические поля, к вопросам параллелизма.

2
ответ дан 29 November 2019 в 00:43
поделиться

Раздел 10.7.4

Секция 10.7.4 из Спецификации C #:

, когда свойство указано как AN автоматически реализовано свойство, Скрытое поле поддержки автоматически доступны для собственности, а Аксессуары реализованы для чтения из и напишите на это поле поддержки. То В следующем примере:

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

эквивалентно следующей декларации:

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; } }
}

Это то, что мы обещаем, и это то, что вы получаете. Точка автосовой недвижимости заключается в том, чтобы сделать самую основную, простое, дешевую вещь; Если вы хотите сделать что-то фантастику, то вы должны написать «настоящую» свойство.

51
ответ дан 29 November 2019 в 00:43
поделиться

Нет. Вы должны обернуть их в механизмах блокировки нити.

object _lock = new object();
public static Main(string[] args)
{
    lock(_lock)
    {
         Prop = new T();
    }


    T val = null;
    lock(_lock)
    {
         val = Prop;
    }
}
6
ответ дан 29 November 2019 в 00:43
поделиться

Нет синхронизации, предоставляемых автоматическими свойствами, включая статические свойства.

Если вам нужна полная безопасность потоков, вы захотите использовать свои собственные свойства с полевым полем и обрабатывать синхронизацию самостоятельно.

4
ответ дан 29 November 2019 в 00:43
поделиться
Другие вопросы по тегам:

Похожие вопросы: