C# static看了就懂

    /// <summary>
    /// 可以在class前面加static看看里面会有哪些错误和提示
    /// </summary>
    public class Feige
    {
        /// <summary>
        /// 静态变量
        /// </summary>
        public static string hao = "hao";

        /// <summary>
        /// 无参构造函数
        /// </summary>
        public Feige()
        {

        }

        /// <summary>
        /// 多参构造函数
        /// </summary>
        /// <param name="str"></param>
        /// <param name="ii"></param>
        /// <param name="flag"></param>
        public Feige(string str, int ii, bool flag)
        {
            hao = str;
        }

        /// <summary>
        /// 静态构造函数
        /// </summary>
        static Feige()
        {

        }
        
        /// <summary>
        /// 静态方法
        /// </summary>
        /// <returns></returns>
        public static string GetName()
        {
            return "飞哥";
        }

        /// <summary>
        /// 带参数的非静态方法
        /// </summary>
        /// <param name="name"></param>
        /// <returns></returns>
        public string GetName(string name)
        {
            return name;
        }
    }

    /// <summary>
    /// 测试类,可以继承一下 Feige【加和不加static会有什么效果】
    /// </summary>
    public class Test
    {
        public void MyTest()
        {
            //在这里调用一下Feige中的成员看看那些能实现,那些不能实现,编译无法通过
            Feige feige = new Feige();
            feige.GetName();
            string ss = Feige.hao;
            Feige.GetName();
            static string ss = "";
        }
    }

经过static的反复添加和取消看完代码来总结如下

static称之为静态修饰符,开辟新的内存,调用速度快。

第一、 静态类

静态类:无法从静态类派生子类,无法实现构造方法【也就是说整个类无法实例化】,静态类中的变量和方法全部无法实例化,一切皆静态。

主要特性:

1:仅包含静态成员。

2:无法实例化。

3:是密封的。

4:不能包含实例构造函数。

第二、 静态变量

1.      具有全局性

2.      无论类创建多个对象,其中静态成员的共享一个副本

3.      C#不支持静态局部变量【不支持方法内部的静态变量,使用静态局部变量是无法通过编译的】

第三、 静态方法

1.      类直接调用

2.      不能在内部声明静态变量

3.      不能被实例的对象访问

4.      子类中静态方法即便和父类方法名称相同,也不会覆盖父类,得到的只是一个引用

第四、 静态构造方法

1.      不能使用修饰符,是无法携带参数的。【static后面加类名即可】

2.      不能在内部声明静态变量

3.      一个类只有一个静态构造函数

4.      最多只能运行一次

5.      不能被继承

6.      不声明静态构造方法,编译器会自动默认生成

7.      和构造函数不冲突

  • 3
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
C#中的static关键字可以用于修饰类、字段、方法、属性、构造函数等。它的作用是将其修饰的成员变为静态成员,即该成员不再与类的实例对象绑定,而是与类本身绑定。这意味着,无论创建多少个类的实例对象,静态成员只有一份,且可以通过类名直接访问。 在引用中,Student类被定义为静态类,其中的字段和方法也被定义为静态的。这意味着我们可以直接通过类名Student来访问其中的静态方法Print(),而不需要创建Student类的实例对象。 在引用中,Person类中的字段和方法被定义为静态的,但是Person类本身并没有被定义为静态类。这意味着我们需要先创建Person类的实例对象,然后通过该实例对象来访问其中的静态方法Print()。 下面是一个示例代码,演示了如何使用static关键字定义静态成员: ```csharp using System; class MyClass { public static int myStaticVar = 42; // 静态字段 public int myInstanceVar = 0; // 实例字段 public static void myStaticMethod() // 静态方法 { Console.WriteLine("This is a static method."); } public void myInstanceMethod() // 实例方法 { Console.WriteLine("This is an instance method."); } } class Program { static void Main(string[] args) { Console.WriteLine(MyClass.myStaticVar); // 直接访问静态字段 MyClass.myStaticMethod(); // 直接调用静态方法 MyClass obj1 = new MyClass(); MyClass obj2 = new MyClass(); obj1.myInstanceVar = 1; obj2.myInstanceVar = 2; Console.WriteLine(obj1.myInstanceVar); // 访问实例字段 Console.WriteLine(obj2.myInstanceVar); obj1.myInstanceMethod(); // 调用实例方法 obj2.myInstanceMethod(); } } ```

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值