从 void 方法返回一个值
本文关键字:一个 void 方法 返回 | 更新日期: 2023-09-27 17:57:09
有没有办法以某种方式存储来自void
方法的值?特别是,我正在尝试获取PowerPoint演示文稿中特定形状的动画效果数据,并在以后使用它:
object r = presentation.Slides[2].Shapes[3].PickupAnimation();
但是编译器说
无法将类型"对象"隐式转换为"void"
当然,我不能编辑此方法并将其更改为返回值。
如果方法不返回值或具有ref/out
参数,则无法存储"结果",因为没有结果。
您应该检查是否存在返回所需值的方法或属性,因为如果不修改方法本身,就无法完成您请求的任务。
我不是 VSTO 专家,但我很确定除了PickupAnimation
之外,还有其他属性或其他方法可以返回给您动画效果参数。
若要仅将相同的动画参数复制到另一个Shape
,请使用 ApplyAnimation
方法,如下所示:
presentation.Slides[2].Shapes[3].PickupAnimation();
presentation.Slides[2].Shapes[4].ApplyAnimation();
它就像动画参数的剪贴板。从文档中:
将上次选取的动画应用于 Shape 对象。
如果有合适的函数或属性等,您可以在调用void
方法后调用以获取结果,您可以将逻辑包装到扩展方法中。当您希望使用流畅的语法时,这可能特别有用。
MSDN:
扩展方法使您能够将方法"添加"到现有类型 无需创建新的派生类型、重新编译或其他方式 修改原始类型。扩展方法是一种特殊的 静态方法,但它们被调用,就好像它们是实例方法一样 扩展类型。对于用 C# 和 Visual Basic 编写的客户端代码, 调用扩展方法之间没有明显区别 以及在类型中实际定义的方法。
例如,如果要在单个操作中选取动画并返回AnimationSettings
,则可以在静态类中编写此扩展方法:
public static AnimationSettings PickupAnimationAndReturnSettings(this Shape shape)
{
shape.PickupAnimation();
return shape.AnimationSettings;
}
请注意,这只是演示该技术的示例 - 我对所讨论的 API 没有任何特别的知识。