按作业初始化对象?

Shi*_*mmy 0 c# compiler-construction initialization variable-assignment

如何通过赋值为类型提供初始化的能力,如下所示:

public struct WrappedByte
{
    private byte m_value;
}

//Usage:    
WrappedByte x = 0xFF;
Run Code Online (Sandbox Code Playgroud)

Ser*_*rvy 6

您需要使用自定义隐式运算符.请注意,这不仅适用于结构.

public struct WrappedByte
{
    private byte m_value;

    public static implicit operator WrappedByte(byte b)
    {
        return new WrappedByte() { m_value = b };
    }
}
Run Code Online (Sandbox Code Playgroud)

另请注意,这不仅适用于初始化; 这意味着您可以byte在任何WrappedByte预期的位置提供.它还包括除初始化以外的分配,方法的参数等.