c# - C#中的隐式类型转换

标签 c# .net

在理解 C# 中的类型转换时出现问题。我创建了一个简单的类并重载了 ToString()方法,以便类对象字段的值以字符串形式输出:

public class Triple{

public int Int32;
public string String;
public bool Boolean;

public Triple(int Int32, string String, bool Boolean)
{
    this.Int32 = Int32;
    this.String = String;
    this.Boolean = Boolean;

}
 public override string ToString()
{
    return String.Format("{0},{1},{2}", this.Int32, this.String, this.Boolean);
}
我还设置了一个 Triple 类对象到 bool 类型的隐式转换:
 public static implicit operator bool(Triple T1)
    {

        if (T1.Boolean)
        {
            return true;
        }

        else
        {
            return false;
        }
    }
现在当我打电话时:
Triple t1 = new Triple(1, "abcd", true);
Console.WriteLine(t1);
Triple 类的 bool 字段显示为输出,而不是类字段的值。
为什么会这样?

最佳答案

Console.WriteLine 的重载采取boolobject (除其他外)。编译器更喜欢 bool因为您有一个隐式转换运算符。您可以添加 (object).ToString() ,但老实说,我可能会失去接线员 - 不确定它是否对您有所帮助。

关于c# - C#中的隐式类型转换,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65058279/

相关文章:

.net - 为什么 maxConcurrentSessions 默认为这么低的值?什么是安全值?

c# - 更改任何一个元素时如何保持 RichText 格式(粗体/斜体/等)?

c# - 如何将强制转换接口(interface)类型化为具体类型

c# - 为什么具有ContinueWith选项的第二个线程不等待第一个线程的结束?

c# - 如何在链接按钮控件中将参数传递给 Eval()?

c# - 如何在没有 bool 标志的情况下处理用户改变主意?

C# 按类型解析 JSON 组

java - Java 加密与 And .NET 的十六进制生成问题

.net - 在午夜或没有分钟和秒时获取今天的日期

c# - C#中的继承问题