c#如何重载ToString方法...

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了c#如何重载ToString方法...相关的知识,希望对你有一定的参考价值。

这是一个ashx文件,如图

这个context.Request[]本来就是string类型的,但是估计是继承了object下的ToString()方法,
也就是可以context.Request[].ToString()这样用...
我现在想重载这个ToString()方法可以吗?
我想让这个ToString() 判断如果这个context.Request[]是NULL,或者空串,或者是“undefined”的话统一返回null值,其他返回字符串。可以做到么

注意,不要让我另外弄个函数,把这个context.Request[]传进来,然后判断,这个谁都懂...

参考技术A 你想多了;不可能;不是不能加一个新的ToString函数(可以用扩展函数的方式给系统类加函数);
而是加了也没用。。。。context.Request[*] 当这个元素都是Null了。。。。连你加的那个函数的实例都没有你怎么调用。。。。

而且,你的意思是当context.Request[*] 为null时返回null。。。。什么 意义呢,他本身不就是Null了还用得着调谁追问

NULL是临时想到的,因为我的数据不会有NULL
只是空串,跟undefined

前台传过来的参数有9个,如果我在前台判断这个参数是不是空串或者undefined的,
要9个if..看起来很难看...

现在就想是不管前台的值有没有赋值,如果没有赋值,那就传undefined过去了,我就想通过那边的toString如果是undefined的,我就转一下。

而且在对象后面按.就能调出方法了,这样比较方便

追答

那可以通过 扩展函数解决;
public static string ReplaceUndefinedToNull(this string str)

if(str == ""||str=="undfined")
return null
else
return str;

本回答被提问者和网友采纳

Arrays 类中的 .toString() 是如何重载的

【中文标题】Arrays 类中的 .toString() 是如何重载的【英文标题】:How is the .toString() overloaded in the Arrays class 【发布时间】:2021-09-14 22:36:26 【问题描述】:

我遇到了一个方法不能同时被覆盖和重载的概念。但是当我使用 Arrays.toString() 时,

如果我错了,请纠正我,但 toString() 方法已同时被覆盖和重载。这怎么可能?

【问题讨论】:

不,Arrays 没有不带参数的 toString 方法,因此这里没有任何内容被覆盖。 你错了。您可以创建一个覆盖toString() 的类(注意,没有参数)并使用参数重载toString 顺便说一句,一般一个方法可以有多个重载版本,每个重载版本也可以是覆盖,或者依次被覆盖;所以我不认为“不能同时被覆盖和重载”是什么意思很清楚。但是 Arrays 方法是静态的,所以覆盖甚至不入画面。 @MCEmperor @user7 谢谢。我明白了。 @khelwood。如果我的问题不清楚,我很抱歉,但我所说的“不能同时被覆盖和重载”的意思是有没有办法覆盖一个方法,然后重载它。例如。我正在覆盖MyClass 类中的 .hashcode() 方法,我现在可以重载它吗? 为什么要重载 hashCode()?使用依赖于具有单个哈希码的任何给定对象。 【参考方案1】:

当您在子类中具有完全相同的方法签名时,您将被覆盖。当您有两个具有不同类型或参数数量的相同命名方法时,您正在重载。您可以覆盖一个方法,然后重载它,但您可以编写一个方法,当您重载它时,您最终会覆盖一个超类方法。一件事不排斥另一件事。

让我们有一个这样的 Super 类:

public class Super 

    public void testMethod() 

    // Overload
    public void testMethod(String param) 

然后用这样的子类扩展它:

public class Sub extends Super 

    // Override only
    @Override
    public void testMethod() 

    // Overload only
    public void testMethod(int param) 

    // Overload and Override
    @Override
    public void testMethod(String param) 

如您所见,您可以通过多种方式仅重载、仅覆盖或两者兼有。如前所述,一件事并不排斥另一件事。

【讨论】:

以上是关于c#如何重载ToString方法...的主要内容,如果未能解决你的问题,请参考以下文章

Arrays 类中的 .toString() 是如何重载的

c# 中int.ToString()的格式化的示例

C# 中的 Convert 类使用方法

赌一包辣条,这10个java错误你绝对犯过!

JS之toString方法

重载tostring()方法重要性