Вы не можете использовать этот оператор с нулевым распространением.
Этот оператор позволяет распространять нули при вычислении выражения. Он не может использоваться в качестве цели назначения точно так, как предполагает ошибка.
Вам нужно придерживаться простой старой нулевой проверки:
if (a != null)
{
a.Value = someValue;
}
C # поддерживает особенность частичных методов . Это позволяет частичному определению класса пересылать объявление метода, который затем может опционально определить другая часть частичного класса.
Частичные методы имеют некоторые ограничения:
Частичные методы неявно запечатаны и закрыты.
Однако невозможно, чтобы две разные части частичного класса реализовывали один и тот же частичный метод. Обычно частичные методы используются в сгенерированных кодом частичных классах как способ позволить не сгенерированной части расширять или настраивать поведение сгенерированной части (или иногда наоборот). Если частичный метод объявлен, но не реализован ни в одной части класса, компилятор автоматически исключит любые вызовы к нему.
Вот пример кода:
public partial class PartialTestClass
{
partial void DoSomething();
public PartialTestClass() { DoSomething(); }
}
public partial class PartialTestClass
{
partial void DoSomething() { /* code here */ }
}
Поиск «частичных методов». Они будут делать именно то, что вы хотите.
Например:
public partial class Test
{
public Test()
{
//do stuff
DoExtraStuff();
}
partial void DoExtraStuff();
}
public partial class Test // in some other file
{
partial void DoExtraStuff()
{
// do more stuff
}
}
Well, in C# 3.0 you can have what are called partial methods - method that can be called, even if they're not really there.
If they're not defined in any of the partial class files, the call to them will be removed by the .NET compiler/linker.
So you could define e.g. a Customer class:
partial class Customer
{
string name;
public string Name
{
get
{
return name;
}
set
{
OnBeforeUpdateName();
OnUpdateName();
name = value;
OnAfterUpdateName();
}
}
partial void OnBeforeUpdateName();
partial void OnAfterUpdateName();
partial void OnUpdateName();
}
Those partial methods OnBeforeUpdateName() etc. will be called but if your none of the partial class files actually does implement anything for them, that call will be without any effect. Linq-to-SQL uses this big time for these kind of notification methods.
See those blog posts on partial methods:
Marc