C#中静态类、静态方法和静态变量的简单说明
静态方法与静态变量一样,属于类本身,而不属于哪个类的一个对象。调用一个被定义为static的方法,只有通过在它前面加上这个类的名称。一般定义里说是可以通过实例调用的。其他语言我还没测试,但是在C#中是不行的,只能通过类型名称引用它(静态变量也是哦)。
class Class1
{
public static string No { set; get; }
public string Second { set; get; } public static void Wmt()
{
No = "我是静态成员";
} } class Class2
{
public void Test()
{
Class1.Wmt();
Class1.No = "我是静态成员";
var class1 = new Class1();
class1.Second = "我是非静态成员"; } }
还有几点:
1、静态方法只能调用类的静态成员,但它内部是可以定义变量的(常量也能放在静态方法里(编译器会隐式设置为静态))
2、一般方法也可以调用静态成员
class Class1
{
public static string No { set; get; }
public string Second { set; get; } public static void Wmt()
{
string variate = "我是个变量";
No = "我是静态成员";
} public void Www()
{
No = "我是静态成员";
} }
如果类只包含静态方法、属性,那它就是静态类
static class class1
{
public static string No { set; get; } public static void Wmt()
{ }
}
再提下常量和只读字段的区别吧:
常量是一个包含不能修改的值的变量,它是静态的。而只读字段不仅能在声明时初始化,还能在构造函数中赋值,适合用于要通过计算才能确定初始值。只读字段还能是个实例字段哦,类的每个对象都能有不同的值。注意:不一定非要在构造函数中给只读字段赋值,如果没有赋值,它的值就是特定数据类型的默认值。
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text; namespace ConsoleApplication3
{
class Program
{
static void Main(string[] args)
{
var cl = new class1("I'm readonly");
var c2 = new class1("I'm readonly too");
var c3 = new class1();
Console.WriteLine(cl.Wmt);
Console.Write(c2.Wmt);
Console.Write(c3.Wmt);
Console.Read();
}
}
public class class1
{
public readonly string Wmt;
public class1(string words)
{
Wmt = words;
} public class1()
{
}
} }
运行结果:

复习下知识,再把基础的东西翻出来看看,别有一番体会~~
C#中静态类、静态方法和静态变量的简单说明的更多相关文章
- C#中类的实例是不能 获取到类中的静态方法和静态变量(Static)的,及原因
类中的静态方法和变量是共享的.只能用类名去调用.
- SpringBoot @Autowired中注入静态方法或者静态变量
注:用static去定义一个注入的方法或者配置文件值变量,编译时不会有任何异常,运行时会报空指针. Spring官方不推荐此种方法. 原理: https://www.cnblogs.com/chenf ...
- FreeMarker调用Java静态方法以及静态变量的方法
这里介绍下在类似 Spring+FreeMarker 的架构中如何在FreeMarker中访问Java中的静态方法以及静态变量. 一.首先为了方便以及可复用我们创建一个工具类 /** * FreeMa ...
- 关于Java的静态:静态类、静态方法、静态变量、静态块等
原文地址:Java static keyword - Class, Method, Variable, Block, import - JournalDev 很少看到文章能把静态这个问题解释的很清楚, ...
- java中的static使用--静态变量、静态方法
Java 中的 static 使用之静态变量 大家都知道,我们可以基于一个类创建多个该类的对象,每个对象都拥有自己的成员,互相独立.然而在某些时候,我们更希望该类所有的对象共享同一个成员.此时就是 s ...
- 内部类访问外部类的变量必须是final吗,java静态方法中不能引用非静态变量,静态方法中不能创建内部类的实例
内部类访问外部类的变量必须是final吗? 如下: package com.java.concurrent; class A { int i = 3; public void shout() { cl ...
- java之静态方法,静态变量
在自动化测试中,经常会用到静态方法和静态变量.那么什么是静态方法和静态变量呢?以及在什么情况下使用呢?下面来说一说 静态方法和静态变量是使用公共内存空间的,就是说所有对象都可以直接引用,不需要创建对象 ...
- js中的全局变量和静态变量的使用, js 的调试?- 如果js出错, js引擎 就会停止, 这会 导致 后面的 html中 refer 该函数时, 会报错 函数为定义!!
效果里面的函数, 如show, hide,slideDown等, 这些都叫 "效果"函数, 但是里面可以包含动画, 也可以 不包含动画. 动画,是指 元素 的内容 是 逐渐 显示/ ...
- Swift中的类型属性(静态变量)
http://blog.haohtml.com/archives/15098 Swift中的类型属性(静态变量) Posted on 2014/06/13 类型属性语法 在 C 或 Objective ...
随机推荐
- (转)2.4.1 基础知识--添加服务引用与Web引用的区别
<Web服务开发学习实录>第2章构建ASP.NET Web服务,本章我们将学习创建Web服务的各种方法,并重点对使用Visual Studio创建ASP.NET Web服务和修改Web服务 ...
- linux shell脚本连接oracle查询数据插入文件和日志文件中
#!/bin/sh sqlplus "用户名/密码@数据库"<<EOF 或者只有一个库的 :sqlplus "用户名/密码"<<EOF ...
- IOS 创建App的最佳捷径
简网App工场 ----------------创建App的最佳捷径
- c#中将默认常量(32bit)转换为8bit
// //将int进制转换 // private byte hex(int myHex) { byte[] a = BitConverter.GetBytes(myHex); return a[0]; ...
- symfony2 表单
正常情况下我还是更喜欢直接写表单而不是使用symfony内置的表单对象来穿件表单,但当我一个表单比较重要,需要csrf保护的时候 我会选择使用这种方法来表单. 官方文档有介绍一大堆通过类创建表单这里我 ...
- WordPress插件制作教程(四): 将数据保存到数据库
上一篇讲解了添加菜单的方法,这一篇为大家讲解如何将数据保存到数据库中,并且显示在页面上,不会因提交表单时刷新页面输入框中内容消失.要实现这一功能我们需要借助WordPress函数来实现,下面就来讲解具 ...
- 可以让javascript加快的脚本(收藏了)
<?php ob_start('ob_gzhandler'); header("Cache-Control: public"); h ...
- Android provider authorities冲突
在Android项目中的AndroidManifest中provider的authorities相当于一个系统级的全局变量它的值必须唯一,如果有两个应用的authorities相同会导致安装失败.
- mybatis源代码分析:mybatis延迟加载机制改进
在上一篇博客<mybatis源代码分析:深入了解mybatis延迟加载机制>讲诉了mybatis延迟加载的具体机制及实现原理. 可以看出,如果查询结果对象中有一个属性是需要延迟加载的,那整 ...
- 如何实现异步调用WCF
在面向服务的.NET开发中,我们经常要调用WCF服务加载数据,这时候,如果使用同步调用,会阻止UI,影响用户体验UE/UX,而且当服务器ping不通或者网速特别烂的情况下,这时候基本上是处于卡死状态, ...