只含有static方法的类是否要写为static

imarshal 2017-07-24 06:30:41
现在主流的写法是加还是不加static啊
...全文
544 17 打赏 收藏 转发到动态 举报
写回复
用AI写文章
17 条回复
切换为时间正序
请发表友善的回复…
发表回复
首推未来 2017-07-26
  • 打赏
  • 举报
回复
反正我写方法一般不加static 一种情况除外, 就是获取字典类的方法, 写成static的话就可以全局使用了。 也做定义全局变量使用。 至于说 不加 static 就要 实例化 , 这根本不是什么趋势, 我用到的大多方法必须实例化才起作用
75闪光雷 2017-07-26
  • 打赏
  • 举报
回复
我来学习的,请楼主给我一分
幻夢之葉 2017-07-25
  • 打赏
  • 举报
回复
引用 8 楼 imarshal 的回复:
[quote=引用 7 楼 jianwen0529 的回复:] 论坛旨在交流和解决问题,你说我瞎说至少应该指出哪点是错误的吧? 这结论自然我的学习之后理解到的,如果哪里不对我很愿意别人对此进行指教
实例不能调用static方法[/quote] 恩,我发现了。我是C++转过来的,想当然以为是雷同的
幻夢之葉 2017-07-25
  • 打赏
  • 举报
回复

namespace ConsoleApplication4
{
    public static class StaticClass
    {
        public static int a = 11;
        public const int b = 12;
        //public int c = 13; //Error 不能在静态类中声明实例成员
        public static void Fun1(){}
        //public void Fun2() { }//Error 不能在静态类中声明实例成员
    }

    public class NonstaticClass
    {
        public static int a = 11;
        public const int b = 12;
        public int c = 13;
        public static void Fun1() { }
        public void Fun2() { }
    }

    class Program
    {
        static void Main(string[] args)
        {
            //StaticClass sc = new StaticClass();//无法声明静态类型“ConsoleApplication4.StaticClass”的变量
            
            NonstaticClass nsc = new NonstaticClass();
            Console.WriteLine(NonstaticClass.a);
            Console.WriteLine(nsc.c);
            //Console.WriteLine(nsc.a);// Error 无法使用实例引用访问成员“ConsoleApplication4.NonstaticClass.a”;请改用类型名称对其加以限定
        }
    }
}
秋的红果实 2017-07-25
  • 打赏
  • 举报
回复
我是看具体场合, (1)看数据情况 首先知道static类不能new出一个对象,也就不能执行构造函数,不能给传递新数据 要是运行时不需要更新数据,如类里面数据是是月球的半径,月球的公转周期等固定数据,无需改变,那就用static类,要知道static类在程序加载到内存时,就加载进来了,而且只加载一次,执行效率高 要是处理频繁变动的数据,如计算月球和地球之间引力,距离时刻都在变,需要不断更新数据,这样就不能用static类了 (2)看是不是需要继承 static类不可以被继承。要是你的业务要求没有变种,以后也不需要功能升级,那就static类 但实际上,数据固定的处理,以及不变的需求,很少见,建议不用static类
正怒月神 2017-07-25
  • 打赏
  • 举报
回复
根据你的需求来。 我一般是 1 没有必要一直初始化的, 2 且一直会使用的。 3 主要都是方法的。 可以设计为静态类。 比如Log书写器。
assky124 2017-07-25
  • 打赏
  • 举报
回复
你的类不需要继承就加Static,需要就不加,子类可以直接调用static方法不用加类名
imarshal 2017-07-25
  • 打赏
  • 举报
回复
引用 12 楼 hanjun0612 的回复:
根据你的需求来。 我一般是 1 没有必要一直初始化的, 2 且一直会使用的。 3 主要都是方法的。 可以设计为静态类。 比如Log书写器。
那默认console和winform的Program类区别在什么地方啊
imarshal 2017-07-25
  • 打赏
  • 举报
回复
引用 13 楼 From_TaiWan 的回复:
我是看具体场合, (1)看数据情况 首先知道static类不能new出一个对象,也就不能执行构造函数,不能给传递新数据 要是运行时不需要更新数据,如类里面数据是是月球的半径,月球的公转周期等固定数据,无需改变,那就用static类,要知道static类在程序加载到内存时,就加载进来了,而且只加载一次,执行效率高 要是处理频繁变动的数据,如计算月球和地球之间引力,距离时刻都在变,需要不断更新数据,这样就不能用static类了 (2)看是不是需要继承 static类不可以被继承。要是你的业务要求没有变种,以后也不需要功能升级,那就static类 但实际上,数据固定的处理,以及不变的需求,很少见,建议不用static类
我也觉得不用写static,但为什么默认winform的Program类写了static
imarshal 2017-07-24
  • 打赏
  • 举报
回复
引用 7 楼 jianwen0529 的回复:
论坛旨在交流和解决问题,你说我瞎说至少应该指出哪点是错误的吧? 这结论自然我的学习之后理解到的,如果哪里不对我很愿意别人对此进行指教
实例不能调用static方法
幻夢之葉 2017-07-24
  • 打赏
  • 举报
回复
引用 6 楼 imarshal 的回复:
[quote=引用 3 楼 jianwen0529 的回复:] static类的成员必须都是static或者const的,而且不能实例化 非static的可以实例化,可以包含普通成员。static成员可以用类/实例进行调用 你的类本身就是设计为全身static的,那还是标注为static类较好,说明这不应该也不必进行实例化
你在瞎说[/quote] 论坛旨在交流和解决问题,你说我瞎说至少应该指出哪点是错误的吧? 这结论自然我的学习之后理解到的,如果哪里不对我很愿意别人对此进行指教
imarshal 2017-07-24
  • 打赏
  • 举报
回复
引用 3 楼 jianwen0529 的回复:
static类的成员必须都是static或者const的,而且不能实例化 非static的可以实例化,可以包含普通成员。static成员可以用类/实例进行调用 你的类本身就是设计为全身static的,那还是标注为static类较好,说明这不应该也不必进行实例化
你在瞎说
imarshal 2017-07-24
  • 打赏
  • 举报
回复
引用 4 楼 caozhy 的回复:
static类本质是sealed+abstract 如果你的类不允许继承+实例化,就可以定义static
那为什么默认console的Program类没写static,而默认winform写了static
threenewbee 2017-07-24
  • 打赏
  • 举报
回复
static类本质是sealed+abstract 如果你的类不允许继承+实例化,就可以定义static
幻夢之葉 2017-07-24
  • 打赏
  • 举报
回复
static类的成员必须都是static或者const的,而且不能实例化 非static的可以实例化,可以包含普通成员。static成员可以用类/实例进行调用 你的类本身就是设计为全身static的,那还是标注为static类较好,说明这不应该也不必进行实例化
imarshal 2017-07-24
  • 打赏
  • 举报
回复
引用 1 楼 wxstar8 的回复:
不加在外部调用岂不是要实例化
那为什么默认的Program类,console没加,而winform加了
wxstar8 2017-07-24
  • 打赏
  • 举报
回复
不加在外部调用岂不是要实例化

110,536

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧