c# - 通过派生类型调用的静态方法

标签 c# sharpdevelop

有一个类,叫做circle。它包含 circleID、circleGeometry 和 circlePath 属性。

public class Circle 
{
    public string ID {get; set;}
    public EllipseGeometry circleGeometry {get; set;}
    public Path circlePath {get; set;}
}

现在,我正在尝试为一个圆设置 ZIndex 值。例如,它将是 2。

Canvas.SetZIndex(someCircleID.circlePath,2);

但我有这样的警告:

"static method invoked via derived type"

谁能解释一下这是什么意思?

最佳答案

SetZIndexPanel 类上定义,Canvas 派生自该类。编译器生成一条警告,说明您正在对子类型使用静态方法。这不是一个实际的问题,但在以某些方式使用时可能会导致混淆。由于 SetZIndex 返回无效,所以这应该不是问题。

但想象一下:

var ftpRequest = (FtpWebRequest) HttpWebRequest.Create("ftp://my.ftp.com");

Create 实际上是 WebRequest 的一个静态方法,但是用在 HttpWebRequest 上,因为它是一个派生类型并且你 < em>可以这样做。所以,您希望它是正在生成的 Web 请求,对吗?但它不是,它生成一个 FtpWebRequest,因为它是在 URI 中指定的。

编辑:

我想指出的是,一般来说,编译器警告的存在是有原因的,这也是这个警告存在的方式。只要没有在 Canvas 类中创建的 SetZIndex 重载,调用就是安全的。但是正如@SriramSakthivel 在评论中指出的那样,如果您或任何其他人,它将不再输出所需的结果,您必须意识到这一点。

关于c# - 通过派生类型调用的静态方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30298053/

相关文章:

c# - 如何使用 NPOI 更改 app.xml (XSSF) 中的应用程序?

c# - 如何在 .NET 中通过 ssh 连接实现发送和接收 hl7 数据

c# - 您是否建议使用SharpDevelop在Linux上试用C#?

python - 从 IronPython 2.6 脚本构建 .exe 时找不到模块 "random"

c# - 如何使用 SharpDevelop 的 Cucumber

python - 如何使用 Winforms 在 IronPython 中画线?

c# - Unity C# Player 使用 Rigidbody2D.AddForce 速度太快

c# - Quartz.Net - 更新/删除作业/触发器

c# - NHibernate 无法确定 X 的类型

c# - 使用 Mysql 作为 Sharp Develop 的嵌入式应用程序数据库