如何在c#中使用隐式

超级明星

我有两个类如下:

class Bear : IPersonality
    {
        ...
    }

class Friend<T> where T : IPersonality
    {
        T friend;

        public Friend(T animal)
        {
            friend = animal;
        }

        ...

        public static implicit operator Friend<T>(Bear v)
        {
            throw new NotImplementedException();
        }
    }

如何使用隐式运算符来创建这样的 Friend 类的实例?

Friend<Bear> bear = new Bear("Pooh", 5);
德米特里·比琴科

如果您T对任何动物使用泛型,请继续使用implicit

 class Friend<T> where T : IPersonality {
   ... 

   public static implicit operator Friend<T>(T animal) => 
     animal == null ? null : new Friend<T>(animal);
 }

如果只能Bear是一个隐式朋友(但不是,比如说,Rabbit),将代码移动到Bear

class Bear : IPersonality {
  ... 

  public static implicit operator Friend<Bear>(Bear bear) =>
    bear == null ? null : new Friend<Bear>(bear);
}

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何在成员函数中使用隐式类型转换?

如何在Java中使用Scala隐式类

如何在 trait 中使用隐式方法

如何在表达式树C#中使用隐式转换?

Playframework 2.2.X scala-如何在json的Writes中使用隐式变量

如何在奥利奥(8.0)中使用隐式广播PACKAGE_ADDED?

如何在Django的ForeignKey字段中使用通过模型类自动创建的隐式?

如何在非活动类和片段中使用隐式意图

如何在Play Framework的路由文件中使用导入和隐式?

如何在WinForms应用程序中使用Salesforce OAuth 2.0隐式流身份验证?

如何在自定义terraform提供程序中使用隐式创建步骤处理怪异的API流

隐式类构造如何在C ++中工作?

隐式转换如何在C ++中工作

在Play 2.5 ActionRefiner中使用隐式

在Agda中使用隐式参数

在硒中使用隐式等待

如何在图中绘制隐式方程?

如何找出我的Scala代码中使用了哪些隐式

在类型类的实现中使用HList.foldRight时如何查找隐式?

在C ++中使用隐式转换进行复制初始化

如何修复隐式转换的C ++警告?

如何使用隐式参数实现FRP?

如何使用DialogFlow测试隐式调用

如何使用隐式展开的可选选项?

如何在Coq中显式提供隐式参数?

如何在Visual Studio 2017(C ++)中使用Chromium嵌入式框架?

如何在 C++ 中使用函数式编程操作大型特征矩阵?

如何在C ++中删除类的所有隐式(默认)方法?

C ++如何在不进行隐式转换的情况下模拟函数?