【问题标题】:Is this possible to access struct member by calling instance这是否可以通过调用实例来访问结构成员
【发布时间】:2014-10-25 10:16:36
【问题描述】:

我有一个关于 C# 结构的问题。我通常使用类,通过 struct 可以覆盖 = 运算符进行赋值。

就我而言,我有一个struct

public struct ObjectWrap<T>
{
    public T _value;

    public ObjectWrap(T value)
    {
        _value = value;
    }

    public static implicit operator ObjectWrap<T>(T value)
    {
        return new ObjectWrap<T>(value);
    }
}

(整个struct 代码不存在)

通过这样做,可以做这样的事情:

ObjectWrap<String> d = "My value";

但是,可以通过调用struct来访问我的struct值成员,比如

!String.IsNullOrWhiteSpace(d)

否则,我必须做一个访问器,它不是很“人性化”。

【问题讨论】:

  • 隐式运算符也可以为类重载。顺便说一句,您忘记隐藏您的班级名称DbField :-D
  • You can't overload operator=。但是你可以定义一个隐式转换操作符。

标签: c# .net struct operators implicit-conversion


【解决方案1】:

当然。只需翻转隐式运算符即可。顺便说一句,这在课堂上也同样有效:

public static implicit operator T(ObjectWrap<T> value)
{
    return value._value;
}

此示例使用传入类型 T 作为返回值类型,因此这适用于 ObjectWrapper&lt;T&gt; 提供的每种类型 T

【讨论】:

  • 没问题。我稍微改变了你的帖子。还修复了我遇到的一些代码问题。这将有助于未来的读者。如果您愿意,请随时回滚。
猜你喜欢
  • 2019-01-15
  • 2018-01-21
  • 1970-01-01
  • 1970-01-01
  • 2022-12-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多