C#static

只能用类名调用静态成员(用"类名.???")

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

namespace ConsoleApplication3
{
    class AA
    {
        static int a;
        public static void set(int a)
        {
            AA.a = a;
        }
        public static int get()
        {
            return a;
        }
    }
    class Program
    {
        static void Main(string[] args)
        {
            AA.set(123);
            Console.WriteLine(AA.get());            
        }
    }
}

用实例来调用是非法的:
    AA t = new AA();
            t.set(123);//报错“无法使用实例引用来访问成员“ConsoleApplication3.AA.set(int)”;请改用类型名来限定它”

与C++有很大不同

C++例:

#include<iostream>
#include<cstring>
#include"include\AA.h"

using namespace std;

int main()
{
    cout<<AA::a<<endl;
    AA t;
    cout<<t.a<<endl;
}

------------------------------
#ifndef AA_H
#define AA_H


class AA
{
    public:
        AA();
        virtual ~AA();
        static int a;
    protected:
    private:
};

#endif // AA_H

-----------------------------
#include"E:\我\C++\试验\static\include\AA.h"

int AA::a = 0;//一定要写这一句,否则报错"undefined reference to `AA::a'"
AA::AA()
{
    //ctor
}

AA::~AA()
{
    //dtor
}

C++中static即可用类名调用又可用实例来调用,且用类名时为"类名::???"

 



 

可以有静态构造函数,会最早被调用,静态构造函数不能加访问权限的关键字(如public等),它可以完成初始化器无法完成的设定工作(但只能做一次)。

转载于:https://www.cnblogs.com/wos1239/p/4382184.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 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、付费专栏及课程。

余额充值