在sharepoint中处理对象?
我读了msdn关于在中处理对象的文章 现在我真的很困惑。 考虑这个例子在sharepoint中处理对象?,sharepoint,Sharepoint,我读了msdn关于在中处理对象的文章 现在我真的很困惑。 考虑这个例子 SPList List = SPContext.Current.Web.Lists["DemoList"]; SPListItem Item = List.GetItemById(ItemID); 是否可以使用此选项或更好地使用: using (SPWeb web = SPContext.Current.Web) { SPList List= web.Lists["D
SPList List = SPContext.Current.Web.Lists["DemoList"];
SPListItem Item = List.GetItemById(ItemID);
是否可以使用此选项或更好地使用:
using (SPWeb web = SPContext.Current.Web)
{
SPList List= web.Lists["DemoList"];
SPListItem Item = List.GetItemById(ItemID);
}
或者这没什么区别
谢谢在这种情况下,您不需要处理SPWeb,因为您没有创建它。如果您负责实例化SPWeb对象和SPSite对象,则只需处置该对象 因此,在下面的实例中,您需要调用dispose或使用using语句自动ACLED dispose,因为您负责创建SPSite
void CombiningCallsBestPractice()
{
using (SPSite siteCollection = new SPSite(SPContext.Current.Web.Url))
{
using (SPWeb web = siteCollection.OpenWeb())
{
// Perform operations on site.
} // SPWeb object web.Dispose() automatically called.
} // SPSite object siteCollection.Dispose() automatically called.
}
using语句相当于在块的末尾调用web.Dispose,但更具可读性,并且不太可能忘记该处理
如果您担心SharePoint代码中是否有任何未经处理的对象,我强烈建议您使用。此工具将分析您的部件,并指出所有可能存在未曝光对象的位置。太棒了- 在这种情况下,您不需要处理SPWeb,因为您没有创建它。如果您负责实例化SPWeb对象和SPSite对象,则只需处置该对象 因此,在下面的实例中,您需要调用dispose或使用using语句自动ACLED dispose,因为您负责创建SPSite
void CombiningCallsBestPractice()
{
using (SPSite siteCollection = new SPSite(SPContext.Current.Web.Url))
{
using (SPWeb web = siteCollection.OpenWeb())
{
// Perform operations on site.
} // SPWeb object web.Dispose() automatically called.
} // SPSite object siteCollection.Dispose() automatically called.
}
using语句相当于在块的末尾调用web.Dispose,但更具可读性,并且不太可能忘记该处理
如果您担心SharePoint代码中是否有任何未经处理的对象,我强烈建议您使用。此工具将分析您的部件,并指出所有可能存在未曝光对象的位置。太棒了- 我曾经读过一篇关于SPWeb的声明,上面说SPWeb就像一个可爱的女孩——如果它不是你的,不要碰它,如果它是你的——好好照顾它
因此,如果您创建了SPWeb类的一个新实例,则必须对其进行处理。如果您从其他地方(SPContext.Current对象)获取它,请保持原样
更新
哦,我发现它有点不同:
她就像一个漂亮的女孩,如果你
看到它,就叫它。。。但是不要打断我
规则1。i、 不要叫漂亮女孩
还没有确认是独立的。。如果
她体型庞大的哺乳动物男友发现
出去,他可能会把你的牙齿打掉。这
该规则也适用于通用.NET
我曾经读过一篇关于SPWeb的声明,上面说SPWeb就像一个可爱的女孩——如果它不是你的,不要碰它,如果它是你的——好好照顾它
因此,如果您创建了SPWeb类的一个新实例,则必须对其进行处理。如果您从其他地方(SPContext.Current对象)获取它,请保持原样
更新
哦,我发现它有点不同:
她就像一个漂亮的女孩,如果你
看到它,就叫它。。。但是不要打断我
规则1。i、 不要叫漂亮女孩
还没有确认是独立的。。如果
她体型庞大的哺乳动物男友发现
出去,他可能会把你的牙齿打掉。这
该规则也适用于通用.NET
请澄清,由于您引用的链接是SharePoint 2010。。。WSS 3.0和SharePoint 2010 Foundation(本质上是WSS 4.0)之间有几处更改,其中之一是不再需要处理SPWeb对象,仅当从using块中的SPSite引用时才需要处理SPSite对象。似乎与您提供的链接有点不同步。我不确定该文档是否已过期或将被更新。但是,我多次听说SPWeb不需要dispose调用。在阅读了那篇文章之后,我不确定在什么情况下这是正确的。随着发布日期的临近,我认为会有进一步的扩展 对于上面引用的代码,正如其他人所说,由于您没有创建对象,因此不必管理对象。事实上,如果您从SPContext对象获得WSS 3.0中的SPSite和SPWeb,那么如果您处置该对象,您将遇到SharePoint问题,因为SharePoint运行时实例化了该对象 如上所述,SPDisposeChecker是一个非常有用的工具。罗杰·兰姆(Roger Lamb)也有一篇很好的文章解释了最佳实践
请澄清,由于您引用的链接是SharePoint 2010。。。WSS 3.0和SharePoint 2010 Foundation(本质上是WSS 4.0)之间有几处更改,其中之一是不再需要处理SPWeb对象,仅当从using块中的SPSite引用时才需要处理SPSite对象。似乎与您提供的链接有点不同步。我不确定该文档是否已过期或将被更新。但是,我多次听说SPWeb不需要dispose调用。在阅读了那篇文章之后,我不确定在什么情况下这是正确的。随着发布日期的临近,我认为会有进一步的扩展 在r 对于上面引用的代码,正如其他人所说,由于您没有创建对象,因此不必管理对象。事实上,如果您从SPContext对象获得WSS 3.0中的SPSite和SPWeb,那么如果您处置该对象,您将遇到SharePoint问题,因为SharePoint运行时实例化了该对象 如上所述,SPDisposeChecker是一个非常有用的工具。罗杰·兰姆(Roger Lamb)也有一篇很好的文章解释了最佳实践