gpt4 book ai didi

c# - 使用类型对象作为返回类型 - 不好的做法?

转载 作者:太空狗 更新时间:2023-10-29 23:55:09 26 4
gpt4 key购买 nike

我有一个方法

    private object SetGrid(IGrid grid)
{
grid.PagerHelper.SetPage(1, 10);
grid.SortHelper.SetSort(SortOperator.Ascending);
grid.PagerHelper.RecordsPerPage = 10;

return grid;
}

它返回一个对象类型的对象。

然后我将对象转换回之前的类型。

    var projectModel = new ProjectModel();

projektyModel = (ProjectModel)SetGrid(projectModel);

这样做的好处是,SetGrid 方法可以在整个应用程序中重复使用。

这是一种常见做法还是我应该避免这样做?

最佳答案

您可以改用通用方法,并将类型参数约束到您的 IGrid 接口(interface):

private T SetGrid<T>(T grid) where T : IGrid
{
grid.PagerHelper.SetPage(1, 10);
grid.SortHelper.SetSort(SortOperator.Ascending);
grid.PagerHelper.RecordsPerPage = 10;

return grid;
}

您应该仍然能够以完全相同的方式调用该方法,只是没有转换。类型推断应该能够自动为您找出所需的泛型类型参数:

var projectModel = new ProjectModel();
projektyModel = SetGrid(projectModel);

编辑...

正如其他答案所提到的,如果您的 IGrid 对象是引用类型,那么您实际上根本不需要从您的方法返回任何内容。如果您传递引用类型,那么您的方法将更新原始对象,而不是它的副本:

var projectModel = new ProjectModel();  // assume that ProjectModel is a ref type
projektyModel = SetGrid(projectModel);
bool sameObject = object.ReferenceEquals(projectModel, projektyModel); // true

关于c# - 使用类型对象作为返回类型 - 不好的做法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2206204/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com