clsTest.cs代码
-------------------------------------------------
using System;namespace BuilderOA.Office.AddressBook
{
/// <summary>
/// clsTest 的摘要说明。
/// </summary>
public class clsTest
{
static String strTest;
public clsTest()
{
//
// TODO: 在此处添加构造函数逻辑
//
strTest = "123";
}
public String GetStr(){
return strTest;
} public String setStr(String tmp){
strTest = tmp;
return strTest;
}
}
}
---------------------------------------------------------------调用方代码
test.aspx
//////////////////////////////////////////////////////////////////////////
/*
文件名:AddressBook_AddNew.aspx.cs
作用: 添加好友地址本
作者:Leon
日期:2003-07-11
版本:1.0.0.0
注释:
修改记录:
**********************************
**********************************
*/
//////////////////////////////////////////////////////////////////////////
using System;
using System.Collections;
using System.Collections.Specialized;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Web;
using System.Web.SessionState;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.HtmlControls;namespace BuilderOA.Office.AddressBook
{
public class AddressBook_AddNew : System.Web.UI.Page
{
protected System.Web.UI.WebControls.Button BtnAdd;
protected System.Web.UI.WebControls.Button Button1;
protected System.Web.UI.WebControls.Button Button2;

private void Page_Load(object sender, System.EventArgs e)
{
// 在此处放置用户代码以初始化页面
} #region Web Form Designer generated code
override protected void OnInit(EventArgs e)
{
//
// CODEGEN:该调用是 ASP.NET Web 窗体设计器所必需的。
//
InitializeComponent();
base.OnInit(e);
}

/// <summary>
/// 设计器支持所需的方法 - 不要使用代码编辑器修改
/// 此方法的内容。
/// </summary>
private void InitializeComponent()
{    
this.Button1.Click += new System.EventHandler(this.Button1_Click);
this.Button2.Click += new System.EventHandler(this.Button2_Click);
this.Load += new System.EventHandler(this.Page_Load); }
#endregion
private void Button1_Click(object sender, System.EventArgs e) {
clsTest t1 = new clsTest();
Response.Write(t1.GetStr());
} private void Button2_Click(object sender, System.EventArgs e) {
clsTest t2 = new clsTest();
t2.setStr("abc");
Response.Write(t2.GetStr());
}
}
}

解决方案 »

  1.   

    public clsTest()
    {
    //
    // TODO: 在此处添加构造函数逻辑
    //
    strTest = "123";
    }上面代码可以正确执行,如果把
    strText = "123";放在构造函数之外,就会出现上面的问题。
      

  2.   

    你忽略static关键字,当用它声明一个变量时,此变量已经不再只对某一个类的对象,是对所有起作用,因此当其它对象对此变量进行修改时,也会波及其它对象。
      

  3.   

    你所定义的String 类型是一个对象引用类型
    并不是你想像中的值类型
    你说的这个问题是一个C# 对象引用类型的特性
      

  4.   

    Knight94(愚翁) ( ) 信誉:110 
    调用方已经离开生存区域了啊
    zhongwanli(想一下,就会可以) ( ) 信誉:100 
    那我现在就想知道,怎样和C++一样
    new一个对象后显示的给delete掉。
      

  5.   

    去掉 static!!
    Knight94(愚翁)说得没错
      

  6.   

    ms-help://MS.VSCC/MS.MSDNVS.2052/cpguide/html/cpconpropertiesoverview.htm基础要牢 才能做
    public class clsTest
    {
       private  string strTest = "123";
    public clsTest()
    {
    //
    // TODO: 在此处添加构造函数逻辑
    //
    }
    public string StrTest
    {
    get { return strTest;}
    set { strTest=value;}
    }
    }
    调用:
      clsTest test=   new clsTest();
     string we=test.StrTest;
        test.StrTest="you name ";
      

  7.   

    to:IamBM(商用机器) ( ) 信誉:100 
    但是我现在就是要用STATIC。
    因为多个模块调用此类。to:dragonsuc(新的开始) ( ) 信誉:100 
    属性化很好啊,但是不能解决我的问题我的最终目的
    那我现在就想知道,怎样和C++一样
    new一个对象后显示的给delete掉。