過載ToString讓除錯變的更加方便

2021-07-08 14:31:28 字數 2347 閱讀 2716

c#中一切皆源於object,而且缺省會有tostring函式的實現。有時為了更方便的輸出,我們會過載tostring函式。其實tostring不僅可以方便輸出,也可以幫助我們除錯。我們來看看未過載tostring和過載tostring的差別,效果圖如下

在未過載tostring函式時,在除錯時s1顯示的是系統預設的tostring函式,即顯示物件的型別。而我們除錯時,往往是為了看看該物件裡面的資料。為了能看到資料,我們必須將其展開才能看到,也就是屬性name、age、***。而如果我們實現了tostring函式後,直接就能看到。

下面是staff類的實現**

using system;

using system.collections.generic;

using system.linq;

using system.text;

set

}private int _***;

/// /// 性別

///

public int ***

set

}private int _age;

/// /// 年齡

///

public int age

set

}#endregion

public staff()

public staff(string name, int ***, int age)

public override string tostring()

,,歲", name, *** == 1 ? "男" : "女", age);}}

}

當物件的層級很多的時候,這種效果會更加明顯。比如我們在staff之上再加一層叫company的類,**如下

using system;

using system.collections.generic;

using system.linq;

using system.text;

set

}private staff _engineer;

/// /// 工程師

///

public staff engineer

set

}private staff _designer;

/// /// 設計師

///

public staff designer

set

}

#endregion

public override string tostring()

,工程師:,設計師:", manager, engineer, designer);}}

}

來看看未過載tostring和過載tostring的差別。

我們會看到,在未過載前,為了看到設計師的名字必須從c1中展開,再從designer中展開,然後檢視裡面的name屬性。而過載了tostring之後,點開c1就能看的到。

有時,為了在不同的配置模式下進行除錯,我們還可以在tostring過載的時候,再加入一些模式的判斷,比如debug和release模式,將company的tostring函式修改如下

public override string tostring()

,工程師:,設計師:", manager, engineer, designer);

#else

return string.format("release--經理:", manager, engineer, designer);

#endif

}

來看看效果圖

可以看到在debug和release模式下看到了不同的資料,有的專案中會有更多的配置方式,那tostring就可以做更多的變換和處理,至於如何使用就看實際需要了。

讓apk變可除錯

最近學習android逆向發現已經發布的應用基本都不能直接除錯,於是總結一下目前使用過的讓apk變成可除錯的方法。使用adb如下命令檢視default.prop檔案內容 發現ro.debuggable 0,這個屬性控制手機中的應用是否可除錯,0表示不可除錯,1表示可除錯 這裡使用mprop工具來修改...

讓愛變的有力量

本來應該回家之前些這篇部落格的。主要是反思為什麼我們寒暑假要在這裡學習,每次只是放 5天的假期,公尺老師不允許我們多一天的休息,多一天的放鬆。因為每次放假都會想想原因。都會好好的反思。有時候都不知道要加點什麼新東西了。但是這次開學來了公尺老師重新給我們衝力一次電。讓我對這幾天的假期有了新的認識。首先...

讓愛變的有力量

本來應該回家之前些這篇部落格的。主要是反思為什麼我們寒暑假要在這裡學習,每次只是放 5天的假期,公尺老師不允許我們多一天的休息,多一天的放鬆。因為每次放假都會想想原因。都會好好的反思。有時候都不知道要加點什麼新東西了。但是這次開學來了公尺老師重新給我們衝力一次電。讓我對這幾天的假期有了新的認識。首先...