C#类型转换的路径编译器是如何选择的

比如

public class Sample
{
   static public implicit operator uint(Sample value)
   {
     return 0;
     }
     static public implicit operator long(Sample value)
     {
         return 5;
     }
}

在外部调用WriteLine(new Sample())时,是输出0还是5呢?
确实编译一下就知道结果,但是编译器是如何做出选择的?
求助,能发我一下MSDN的文档网址就可以,我不知道关键词是什么没搜到。

你new Sample的时候必须要给定实例对象,你给的如果是uint它就会返回0 你给long就会返回5 这是个很严谨的闭环逻辑啊