首页 > 解决方案 > 我如何将类传递给统一的方法?

问题描述

我有一些像这样的 C# 类:

public class Result_Splash
{
    public string id;
    public string version_code;
    public string version_number;
}

public class Link_Splash
{
    public int id;
    public int app_version_id;
    public string link;
    public int provider_type;
    public int order_download;
    public int status;
}

和这样的方法:

public void SomeClassDebug(???)
{
    Debug.Log(???);
}

所以,我需要将我的类传递给我的方法并调试他们的领域。可能吗?

标签: c#unity3d

解决方案


Debug.Log();

期望一个string或一个object(c# 中所有内容的基类)作为参数。如果您传入 an objectDebug.Log内部将string使用ToStringthat 的方法自动将其转换为 a object

问题是这里应该记录什么?

当然,您可以在类似中定义“临时”,Debug.Log例如

public void SomeClassDebug(Result_Splash result)
{
    Debug.Log(result.id);
}

所以你会看到result.id.ToString()作为日志的结果。

在我看来,更好的方法是在您的类中实现/覆盖ToString,以便根据您的需要自定义它将生成的输出。(我很懒,所以我会为小班展示它 - 另一个是你的作业)

public class Result_Splash
{
    public string id;
    public string version_code;
    public string version_number;

    public override string ToString()
    {
        // For example print the values as requested
        return $"id: {id}, version_code: {version_code}, version_number: {version_number}";
    }
}

我使用了$字符串插值,这基本上是一种更好的写作方式,例如

return base.ToString() + " id: " + id + ", version_code: " + version_code + ", version_number: " + version_number;

但是您可以使用任何您想要返回的值。

现在你可以简单地做

public void SomeClassDebug(Result_Splash result)
{
    Debug.Log(result);
}

当你调用它时,传入该类型的实例

var aResult = new Result_Splash()
    {
        id = "Hello",
        version_code = " ",
        version_number = "World!"
    };

SomeClassDebug(aResult);

这应该生成一个日志

id: 你好,version_code = , version_number = World!


推荐阅读