静态与公共财产
本文关键字:财产 静态 | 更新日期: 2023-09-27 18:20:38
我在MVC中编写代码,但我不理解项目中的行为公共属性!!我的代码具有非常简单的增量属性。当我点击按钮时,属性将被覆盖。只有当我有STATIC属性时它才起作用,但当我有PUBLIC时,增量就不起作用了。公共财产转瞬即逝?你能帮我理解吗,它是我的控制器:
public class DatsController : Controller
{
// GET: Dats
Dats dats;
static public int _Var
{
get; set;
}
public DatsController()
{
dats = new Dats();
}
public ActionResult Index()
{
if (Request.HttpMethod == "post")
{
ViewBag.zmienna = _Var;
dats.dayToday = DateTime.Now.Date;
}
else
{
// var = var + 5;
ViewBag.zmienna = _Var;
}
return View();
}
public ActionResult Next()
{
_Var = _Var + 5;
//dats.firstDayWeek = data.firstDayWeek.AddDays(7);
return RedirectToAction("Index", "Dats");
}
}
好的,谢谢你的回答!!我被阅读了,我被写了另一个代码,但仍然没有工作。。。。我知道问题出在哪里,但不知道如何解决;/如果你能帮我,我会很高兴的:)
我的型号:
public class Dats
{
static private DateTime _dataToday;
static private DateTime _firstDayWeek;
static private DateTime _lastDayWeek;
static public DateTime DayToday { get { return _dataToday = DateTime.Now.Date; } }
static public DateTime FirstDayWeek { get { return _firstDayWeek = Dats.pierwszyDzienTygodnia(_dataToday); } set { _firstDayWeek = value; } }
static public DateTime LastDayWeek { get { return _lastDayWeek = Dats.ostatniDzienTygodnia(_dataToday); } set { _lastDayWeek = value; } }
static public DateTime pierwszyDzienTygodnia(DateTime data)
{
int dzien = DayOfWeek.Monday - data.DayOfWeek;
if (dzien > 0)
{
dzien -= 7;
}
return data.Date.AddDays(dzien);
}
static public DateTime ostatniDzienTygodnia(DateTime data)
{
DateTime ostatniDzien = pierwszyDzienTygodnia(data.Date);
return ostatniDzien.Date.AddDays(6);
}
}
我的控制器:
public class DatsController : Controller
{
public ActionResult Index()
{
return View();
}
public ActionResult Next()
{
Dats.FirstDayWeek = Dats.FirstDayWeek.AddDays(7);
return RedirectToAction("Index", "Dats");
}
}
我的观点:
@using (Html.BeginForm("Next", "Dats", FormMethod.Post))
{
<button type="submit">Next</button>
@*@Html.ActionLink("dalej","Next", "Visits",new {data =7})*@
<dl class="dl-horizontal">
@Dats.DayToday
<dd>@Dats.FirstDayWeek</dd>
<dd>@Dats.LastDayWeek</dd>
</dl>
}
我想在我的房产中增加日期firstDayWeek。
class A{
public static int c;
};
class B{
public int c;
}
A a = new A();
a.c =0;
a.c++;//1
A aa = new A();
aa.c++;//2
B b= new B();
b.c++;//1;
B bb = new B();
bb.c++;//1
问题应该是静态与实例属性。功能是两者之间的基本区别。静态属性在类的所有对象之间共享。因此,无论何时发出新请求,都会创建控制器类的新实例。由于该属性是静态的,因此控制器的新实例可以获取和设置它。但是,如果是实例变量,则该属性也是新的,并在创建控制器的新示例时初始化。
无论何时编写函数或声明变量,在创建类的对象之前,它都不会在内存中创建实例。但若用static修饰符声明任何函数或变量,它会直接在内存中创建实例并全局执行。静态修改器不引用任何对象。因此,它们就像记忆中的单个副本,由所有人共享。您应该只对应用程序的硬编码值使用静态变量。请参阅此了解更多说明C#中静态变量的用途是什么?何时使用?为什么可以';我在方法内部声明静态变量吗?