我正在尝试使用以下代码来获取和设置属性。 但是当尝试使用控制台打印属性时,它返回一个空字符串。为什么没有设置属性?
using System;
public class Program
{
public static void Main()
{
myclass x=new myclass();
x.myproperty="test";
Console.WriteLine(x.myproperty);
}
class myclass{
string sample;
public string myproperty
{
get { return sample;}
set {sample=myproperty;}
}
}
}
答案 0 :(得分:4)
在setter中,您应该使用value
为基础字段分配新值
改用它
public string myproperty
{
get { return sample; }
set { sample = value; }
}
或在C#7
中public string myproperty
{
get => sample;
set => sample = value;
}
如@ bradbury9所述,您也可以使用auto-implemented properties,如果您不希望getter
和setter
中的任何其他逻辑,而不仅仅是获取并设置,就可以使用这种情况字段,如果是这种情况,则可以在代码段
public string myproperty { get; set; }
答案 1 :(得分:0)
value关键字对于设置值很重要。在Visual Studio中,可以使用propfull + double选项卡来避免此类常见错误。它将通过快捷方式创建完整属性。
这是解决方案
public class temp_shared_context {
public static Context ctx = null;
public static Context getCtx() { return ctx; }
public static void setCtx(Context ctx) { temp_shared_context.ctx = ctx; }
}