В вашем примере нет никаких поведенческих изменений, так как this()
вызывает конструктор без параметров для структуры, которая не определена.
Обратите внимание, что в C # 6.0 и новее вы не можете переопределить конструктор структуры без параметров, поэтому если вы сделаете:
public struct Example
{
public Example() // compile error in c# 6.0 and up
{
}
}
Вы получите ошибку компиляции. Подробнее здесь .
В более старых версиях C # вы можете переопределить конструктор без параметров, что означает, что вы можете добавить дополнительное поведение в свой параметризованный конструктор, изменив безпараметрический.
Помимо этого, теоретически может снизиться производительность из-за дополнительного кода IL, сгенерированного для конструктора this()
:
Example..ctor:
IL_0000: ldarg.0
IL_0001: initobj UserQuery.Example
IL_0007: nop
IL_0008: ldarg.0
IL_0009: ldarg.1
IL_000A: call UserQuery+Example.set_Number
IL_000F: nop
IL_0010: ret