asp.net中静态变量和非静态变量的区别

静态变量:
静态变量使用 static 修饰符进行声明
在所属类被装载时创建
通过类进行访问
所属类的所有实例的同一静态变量都是同一个值
非静态变量:
不带有 static 修饰符声明的变量称做非静态变量
在类被实例化时创建
通过对象进行访问
同一个类的不同实例的同一非静态变量可以是不同的值
示例:

[复制到剪贴板]CODE:

using System;
using System.Collections.Generic;
using System.Text;
namespace Example01
{
    class Program
    {
        class Class1
        {
            public static String staticStr = "Class";
            public String notstaticStr = "Obj";
        }
        static void Main(string[] args)
        {
            //静态变量通过类进行访问,该类所有实例的同一静态变量都是同一个值
            Console.WriteLine("Class1's staticStr: {0}", Class1.staticStr);
            Class1 tmpObj1 = new Class1();
            tmpObj1.notstaticStr = "tmpObj1";
            Class1 tmpObj2 = new Class1();
            tmpObj2.notstaticStr = "tmpObj2";
            //非静态变量通过对象进行访问,不同对象的同一非静态变量可以有不同的值
            Console.WriteLine("tmpObj1's notstaticStr: {0}", tmpObj1.notstaticStr);
            Console.WriteLine("tmpObj2's notstaticStr: {0}", tmpObj2.notstaticStr);
            Console.ReadLine();
        }
    }
}

结果:
Class1's staticStr: Class
tmpObj1's notstaticStr: tmpObj1
tmpObj2's notstaticStr: tmpObj2

时间: 2024-10-04 19:40:51

asp.net中静态变量和非静态变量的区别的相关文章

线程-static Object obj = new Object(),静态对象和非静态对象有什么区别

问题描述 static Object obj = new Object(),静态对象和非静态对象有什么区别 下面你这段程序中,Object不用static 修饰时不会产生死锁,加上static就会产生死锁,为什么会这样呢? public class TestDeadLock implements Runnable{ static Object o1 = new Object(); //在Object前面加static与不加对synchronized有什么影响,为什么执行结果不一样 static

C# 静态属性能否读写非静态字段?非静态属性能否读写静态字段?

问题描述 ①静态属性只能读写静态字段吗?能否读写非静态字段?②非静态属性能否读写静态字段?③静态字段可以通过静态属性赋值吗? 解决方案 本帖最后由 syncsdn9 于 2016-03-23 13:44:12 编辑解决方案二:①静态属性能读写非静态字段,前提是能获取到对象②非静态属性当然能读写静态字段③静态字段当然可以通过静态属性赋值解决方案三:都可以的,静态属性调用非静态时需要对像的引用.

PHP静态成员变量和非静态成员变量详解

数据成员可以分静态变量.非静态变量两种. 静态成员:静态类中的成员加入static修饰符,即是静态成员.可以直接使用类名+静态成员名访问此静态成员,因为静态成员存在于内存,非静态成员需要实例化才会分配内存,所以静态成员不能访问非静态的成员..因为静态成员存在于内存,所以非静态成员可以直接访问类中静态的成员. 非成静态员:所有没有加Static的成员都是非静态成员,当类被实例化之后,可以通过实例化的类名进行访问..非静态成员的生存期决定于该类的生存期..而静态成员则不存在生存期的概念,因为静态成员

ASP.NET中的Inherits、CodeFile、CodeBehind的区别详解_实用技巧

Inherits.CodeFile.CodeBehind 在 ASP.NET 中使用代码隐藏方法来设计Web 窗体,可使页代码能够更清晰地从 HTML 内容中分离到完全单独的文件中. 通常一个 @page 指令如下: 复制代码 代码如下: < %@ Page language="c#" Codebehind="WebForm1.aspx.cs" AutoEventWireup="false" Inherits="WebApplic

ASP.NET中实现访问链接的静态地址映射

protected void Application_BeginRequest(Object sender, EventArgs e) { string strCurrentPath; strCurrentPath = Request.Path; //make sure that it ends with aspx. This is some quick validation on the path. //This will shortcut processing for images and

asp.net中DBNull.Value,null,String.Empty区别详解

首先,"null"是C#中(VB.NET为Nothing),表示某个引用对象变量"未引用"任何实体时候的状况(典型症状是如果调用这个变量的某个方法,会抛出NullException之类的异常). String.Empty是一个静态的公共变量,表示某String变量不包含任何字符(等同于"").不过从性能上说,用String.Empty比声明用一个""好一些--显然地,前者是String类的静态变量,无论如何使用只产生一个实例,

asp.net中使用静态变量

asp.net|变量|静态 在asp.net中使用静态变量要比application更好的选择在传统的asp页面中,我们需要利用application变量传递一些特殊变量,在asp.net中任何页面都可以是类,Global.asax也不例外.我们只需要在Global.asax加入类名.  <%@ Application Classname="MyGlobals" %>然后我们定义几个静态变量.在vb.net中使用shared在C#中使用staticVB:<Script

static java-java中静态方法不能调用非静态方法

问题描述 java中静态方法不能调用非静态方法 静态方法中不能调用非静态方法,那么在静态方法中通过实例化一个非静态的对象, 来实现对非静态方法的调用应该怎么理解 public class test1{ public static void main(string []args){//静态的方法 test2 t=new test2(); t.do;//调用非静态的方法 } } class test2{ void do(){} } 解决方案 静态方法中不能调用非静态方法,原因是因为静态方法没有thi

hashmap-java初学中,遭遇无法从静态上下文中引用非静态 变量 this

问题描述 java初学中,遭遇无法从静态上下文中引用非静态 变量 this import java.util.*; public class ComicBooks { public ComicBooks(){ } /** * @param args the command line arguments */ public static void main(String[] args) { // TODO code application logic here HashMap quality =