C# 如何将变量值从一个类访问到另一个类?

C# 如何将变量值从一个类访问到另一个类?,c#,asp.net,C#,Asp.net,我想从一个类访问另一个类的字符串。我使用了如下属性方法- Myclass.cs public class MyClass { private string _user; public string user { get { return this._user; } set { this._user = value; } } } consumption.aspx.cs 我在函数中将值分配给用户 MyClass m = new MyClass(); m.user =

我想从一个类访问另一个类的字符串。我使用了如下属性方法-

Myclass.cs

public class MyClass
{
    private string _user;
    public string user
    { get { return this._user; } set { this._user = value; } }

}

consumption.aspx.cs
我在函数中将值分配给用户

MyClass m = new MyClass();
m.user = "abc"
现在,当我尝试在我的另一个函数中使用这个值时,这个函数在赋值后被调用

RawDal.cs

MyClass m = new MyClass();
string x = m.user;

我得到空值。。。如何操作?

您使用的不是同一个实例。试一试

public class MyClass
{
    private string _user;
    public string user
    { get { return this._user; } set { this._user = value; } }

}

public string YourFunction()
{
   MyClass m = new MyClass();
   m.user = "abc"
   return m.user;

}
如果您只想返回一个字符串,请尝试以下操作

string x = YourFunction();

如评论中所述,您正在创建两个独立的
MyClass
实例,其结果简化如下:

int a;
a = 3;
int b;
Console.WriteLine("a: " + b); //<-- here it should be obvious why b is not 3
然后,您可以通过
MyClass.User
随时随地访问相同的
User

3) 使用单例:

public class MyClass
{
    private static MyClass instance = null;
    public static MyClass Instance 
    {
        get
        {
            if(instance == null)
                instance = new MyClass();
            return instance;
        }
    }

    public string User { get; set; }
}
然后您可以通过
MyClass.Instance.User
访问它


可能还有更多的解决方案,但这些都是常见的。

您需要使用相同的
m
。。。或者您可以将
User
设置为静态。您正在创建
MyClass
的两个独立实例。如果您想持久化
user
尝试使用
Singleton
创建MyClass的另一个实例后,它将从头开始初始化,因此您无法访问以前在其他任何地方对该类实例所做的任何操作。您必须使用session(如果是asp.net)或Singleton,正如@Wudziki所说的那样,我将使用
MyClass.Instance.Instance.Instance.Instance.Instance.Instance.Instance.Instance.Instance.User获得相同的结果,因为您无法通过实例访问静态属性。因此,
MyClass.Instance.Instance
将无法使用
成员“UserQuery.MyClass.Instance”进行编译,无法使用实例引用进行访问;改用类型名称限定它
public class MyClass
{
    private static MyClass instance = null;
    public static MyClass Instance 
    {
        get
        {
            if(instance == null)
                instance = new MyClass();
            return instance;
        }
    }

    public string User { get; set; }
}