首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >静态还是非静态?

问静态还是非静态?
EN

Software Engineering用户
提问于 2013-05-29 04:31:18
回答 2查看 536关注 0票数 2

例如,我有以下两个类:

第一

代码语言:javascript
复制
public class Example
{
    public Example()
    {
    }

    public int ReturnSomething
    { 
      return 1;
    }
}

第二

代码语言:javascript
复制
public class Example
    {
        public Example()
        {
        }

        public static int ReturnSomething
        { 
          return 1;
        }
    }

我想使用ReturnSomething方法,这两个类中哪一个分配的内存更少/更多?当我用

代码语言:javascript
复制
int x = Example.ReturnSomething;

或者当我用

代码语言:javascript
复制
Example object = new Example();
int x = object.ReturnSomething();
EN

回答 2

Software Engineering用户

回答已采纳

发布于 2013-05-29 05:00:00

如果没有在方法中使用对象(即没有this.),那么将其变为静态的。例如,在.NET框架中,为了符合代码分析,在这种情况下必须使用静态(参见规则态1822:将成员标记为静态)。

此外,考虑OOP,以便您的代码是可读的。该方法是对象实例的固有方法吗?它是否更适合于类,而不适用于实例?这里的方法首先合适吗?

注意:你应该为人类编写代码,而不是计算机。除非您在嵌入式硬件上工作,否则编写代码时要考虑可读性,而不是内存消耗。如果您所处的情况是内存的每一个字节都很重要,那么请对应用程序进行分析,以确定解决该问题的多种方法中哪一种符合与内存消耗相关的非功能需求。

票数 7
EN

Software Engineering用户

发布于 2013-05-29 05:42:01

MainMa为您的未说问题提供了一个很好的答案 (“我应该选择哪个选项”),但是,为了完整起见,我想我应该回答您的明确问题:

我想使用ReturnSomething方法,这两个类中哪一个分配的内存更少/更多?

您的第二个选项分配的内存稍微多一点。但是,12个字节,4运行一个.NET应用程序为准确地说,如果您正在使用x86。将根据需要收集您的对象(除非您积极地做一些事情来防止这种情况),所以这在长期运行中变得不相关了(即使是在内存非常受限的设备上)。

除非你有很好的理由,否则这个小小的数目不应该影响你的决定。有很好的理由选择静态选项,但这不是其中之一。

票数 3
EN
页面原文内容由Software Engineering提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://softwareengineering.stackexchange.com/questions/199735

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档