C# 静态类与非静态类

简介: C# 静态类与非静态类

区别

静态类与非静态类的重要区别在于==静态类不能实例化==,也就是说,不能使用 new 关键字创建静态类类型的变量。在声明一个类时使用static关键字,具有两个方面的意义:首先,它防止程序员写代码来实例化该静态类;其次,它防止在类的内部声明任何实例字段或方法。

特点

1、静态类中只能包含 静态成员(构造方法、字段、属性),在静态类中无法实例化

下面这些是测试

1.1 静态类中声明静态变量

错误演示
在这里插入图片描述
实例成员就是需要实例化以后才能用的(我这个类要New才能用)
我们给这个变量加上static以后就可以用了,变成静态变量了
在这里插入图片描述

1.2 静态类中声明静态方法

我们在静态类中搞一个带参函数
错误演示
在这里插入图片描述加个static
在这里插入图片描述
我们看下如何输出静态方法和静态变量,把上面两个输出一下
StaticClass1.cs

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace StatacTest
{
    public static class StaticClass1
    {
        public static string name = "lucky";

        public static int returnAge(int age)
        {
            return age; 
        }
    }
}

Program.cs

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace StatacTest
{
    class Program
    {
        static void Main(string[] args)
        {
            //输出静态类中的静态变量和静态方法
            Console.WriteLine(StaticClass1.returnAge(6));
            Console.WriteLine(StaticClass1.name);
        }
    }
}

在这里插入图片描述

2、在非静态类中可以声明静态类成员

NoStaticClass.cs

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace StatacTest
{
    class NoStaticClass
    {
        public static char sex='男';
        public static int PrintTel(int tel)
        {
            return tel;
        }
    }
}
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace StatacTest
{
    class Program
    {
        static void Main(string[] args)
        {
      
            //输出非静态类中的静态变量和静态方法
            Console.WriteLine(NoStaticClass.sex);
            Console.WriteLine(NoStaticClass.PrintTel(66666666));
        }
    }
}

在这里插入图片描述
我们把NoStaticClass.cs里面的static去掉
在这里插入图片描述
在输出脚本上马上就报错了

在这里插入图片描述需要实例化以后才能搞
在这里插入图片描述

相关文章
|
4月前
|
存储 C# 开发者
C#一分钟浅谈:静态成员与静态类介绍
在C#编程中,`static`关键字用于创建静态字段、方法、属性和构造函数等,这些成员属于类本身而非实例。本文从基本概念入手,详细探讨了静态成员与静态类的特点、应用场景及常见误区。通过示例代码展示了如何使用静态字段和方法,并讨论了静态类的定义及其在工具箱和常量集合中的应用。最后总结了正确使用这些特性的策略,以帮助开发者编写高效、可维护的代码。
93 11
C#编程-110:文件操作File静态类
C#编程-110:文件操作File静态类
139 0
C#编程-110:文件操作File静态类
|
存储 开发框架 .NET
C#面向对象——静态类和静态成员
C#面向对象——静态类和静态成员
265 0
深入理解C# 静态类与非静态类、静态成员的区别
深入理解C# 静态类与非静态类、静态成员的区别 静态类 静态类与非静态类的重要区别在于静态类不能实例化,也就是说,不能使用 new 关键字创建静态类类型的变量。
1718 0
|
C#
C#基础知识系列六(静态类和静态类成员)
静态类   静态类与非静态类基本相同,但存在一个区别:静态类不能实例化。 也就是说,不能使用 new 关键字创建静态类类型的变量。 因为没有实例变量,所以要使用类名本身访问静态类的成员。 例如,如果名为 UtilityClass 的静态类有一个名为 MethodA 的公共方法,则按下面的示例所示调...
830 0
|
开发框架 .NET C#
[C#2] 4-可空类型、静态类
1. 可空类型 值类型是不可以为null的[即不可为空值], 假如我们想让它为null呢[比如它对映这数据库中的某个表的某个字段,但是这个字段是null]。 自己实现的话,简单的写一个类,有一个值类型的字段,检查该字段是否初始化,是的话返回该值,否的话返回null。
682 0
|
2月前
|
C# 开发者
C# 一分钟浅谈:Code Contracts 与契约编程
【10月更文挑战第26天】本文介绍了 C# 中的 Code Contracts,这是一个强大的工具,用于通过契约编程增强代码的健壮性和可维护性。文章从基本概念入手,详细讲解了前置条件、后置条件和对象不变量的使用方法,并通过具体代码示例进行了说明。同时,文章还探讨了常见的问题和易错点,如忘记启用静态检查、过度依赖契约和性能影响,并提供了相应的解决建议。希望读者能通过本文更好地理解和应用 Code Contracts。
47 3