我想从一个类访问另一个类的字符串.我使用了属性方法如下 -
Myclass.cs
public class MyClass
{
private string _user;
public string user
{ get { return this._user; } set { this._user = value; } }
}
consumption.aspx.cs
Run Code Online (Sandbox Code Playgroud)
我正在为函数中的用户赋值
MyClass m = new MyClass();
m.user = "abc"
Run Code Online (Sandbox Code Playgroud)
现在,当我尝试在我的另一个函数中使用此值时,在分配此值之后调用该函数
RawDal.cs
MyClass m = new MyClass();
string x = m.user;
Run Code Online (Sandbox Code Playgroud)
我得到空的价值......怎么做?
Chr*_*Fin 11
正如评论中已经提到的那样,您正在创建两个单独的实例,MyClass其结果简化为:
int a;
a = 3;
int b;
Console.WriteLine("a: " + b); //<-- here it should be obvious why b is not 3
Run Code Online (Sandbox Code Playgroud)
您可以通过以下三种方式解决此问题:
1)MyClass对第二个调用使用相同的实例,但在这种情况下,您需要在同一范围内或将实例传递给新范围.
2)使属性/成员静态:
public class MyClass
{
public static string User { get; set; } //the "static" is the important keyword, I just used the alternative property declaration to keep it shorter
}
Run Code Online (Sandbox Code Playgroud)
然后你可以User通过各处访问相同的值MyClass.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; }
}
Run Code Online (Sandbox Code Playgroud)
然后你可以通过它访问它MyClass.Instance.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;
}
Run Code Online (Sandbox Code Playgroud)
如果您只想返回一个字符串,请尝试类似
string x = YourFunction();
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
55517 次 |
| 最近记录: |