C# 创建新对象时重写
我可以用C#做这样的事吗C# 创建新对象时重写,c#,.net,C#,.net,我可以用C#做这样的事吗 如果是这样的话,你怎么做?不,这不是一个JavaScript。不能在运行时将方法附加到已定义的类型 您可以使用来实现C.中的类似功能。 但是,基本上,我建议避免这种情况。如果可能的话,最好修改架构,然后使用动态的东西。让我们继续受益于静态类型语言的优点。不,这不是JavaScript。不能在运行时将方法附加到已定义的类型 您可以使用来实现C.中的类似功能。 但是,基本上,我建议避免这种情况。如果可能的话,最好修改架构,然后使用动态的东西。让我们继续受益于静态类型语言的优
如果是这样的话,你怎么做?不,这不是一个
JavaScript
。不能在运行时将方法附加到已定义的类型
您可以使用来实现C.
中的类似功能。
但是,基本上,我建议避免这种情况。如果可能的话,最好修改架构,然后使用动态的东西。让我们继续受益于静态类型语言的优点。不,这不是
JavaScript
。不能在运行时将方法附加到已定义的类型
您可以使用来实现C.
中的类似功能。
但是,基本上,我建议避免这种情况。如果可能的话,最好修改架构,然后使用动态的东西。让我们继续受益于静态类型语言的优点。为了重写一个方法,您需要从
计算器
继承,并重写继承类中的ValueOfK
方法(前提是在计算器
中声明为virtual
)
在C#中没有其他机制可以重写方法
为了重写一个方法,您需要从
Calculator
继承,并重写继承类中的ValueOfK
方法(前提是在Calculator
中声明为virtual
)
在C#中没有其他机制可以重写方法
您可以使用扩展方法(编辑:如果
计算器
未实现ValueOfK()
)(更多信息:)
分机:
public static class MyExtension
{
public static int ValueOfK(this Calculator calc)
{
return 1;
}
}
编辑:
否则,正如前面提到的那样,您需要从Calculator
继承并重写ValueOfK
。如果方法是非虚拟
或静态
,则需要使用新建
关键字:
public class Calculator
{
protected int ValueOfK()
{
return 0;
}
}
public class BetterCalculator : Calculator
{
protected new int ValueOfK()
{
return 1;
}
}
您可以使用扩展方法(编辑:如果
计算器
未实现ValueOfK()
)(更多信息:)
分机:
public static class MyExtension
{
public static int ValueOfK(this Calculator calc)
{
return 1;
}
}
编辑:
否则,正如前面提到的那样,您需要从Calculator
继承并重写ValueOfK
。如果方法是非虚拟
或静态
,则需要使用新建
关键字:
public class Calculator
{
protected int ValueOfK()
{
return 0;
}
}
public class BetterCalculator : Calculator
{
protected new int ValueOfK()
{
return 1;
}
}
那是不可能的。你想达到什么目标?你为什么要这样做?只是好奇:你为什么要这样做?正是你在问题中所写的-不。但如果你给出理由,可能会有解决办法。这是不可能的。你想达到什么目标?你为什么要这样做?只是好奇:你为什么要这样做?这正是你所写的问题-不。但如果你能给出理由,可能会有解决办法。公平地说,Java(比Javascript更接近C)也有这种能力,通过匿名内部类。@JonSkeet:我不懂Java,所以我对我熟悉的语言做了一个说明。公平地说,Java(比Javascript更接近C#)也有这种能力,通过匿名内部类。@JonSkeet:我不懂Java,所以我对我熟悉的语言做了一个说明。不幸的是,扩展方法不能覆盖实例方法。@GazTheDestroyer是的,我犯了一个错误。继承是唯一的解决方案。不幸的是,扩展方法不能重写实例方法。@GazTheDestroyer是的,我犯了一个错误。继承是唯一的解决方案。如果方法是非虚拟或静态的,则需要使用
new
关键字而不是override
@Zen-这将是隐藏而不是继承。如果方法是非虚拟或静态的,则需要使用new
关键字而不是override
@Zen-这将是隐藏而不是继承遗产
public class Calculator
{
protected int ValueOfK()
{
return 0;
}
}
public class BetterCalculator : Calculator
{
protected new int ValueOfK()
{
return 1;
}
}