C# 如何在两个文件中的两个分部类之间共享变量?
我将此代码保存在一个文件中:C# 如何在两个文件中的两个分部类之间共享变量?,c#,C#,我将此代码保存在一个文件中: namespace Japanese { public partial class PhrasesPage : ContentPage { PhrasesFrame phrasesFrame = new PhrasesFrame(); 此代码位于另一个文件中: namespace Japanese.Views.Phrases { public partial class PhrasesPage { p
namespace Japanese
{
public partial class PhrasesPage : ContentPage
{
PhrasesFrame phrasesFrame = new PhrasesFrame();
此代码位于另一个文件中:
namespace Japanese.Views.Phrases
{
public partial class PhrasesPage
{
public void setTimeInterval()
{
phrasesFrame // can't access
我希望能够访问第二个文件中的短语框架,但似乎不可能。谁能给我一些建议,我可以做什么,这样我就可以在另一个文件中访问它,这也是一个部分类。还有一个问题。我应该用我的分部类从ContentPage继承所有文件,还是仅仅一个文件就足够了?您可以轻松访问其中分部类的所有成员,即使是私有的
public partial class Test
{
private int x = 5;
}
public partial class Test
{
public void Run()
{
Console.WriteLine(x); // outputs 5
}
}
但是,您没有正确地使用它。由于类位于两个不同的名称空间中,编译器将它们视为两个不同的类:
Japanese.PhrasesPage
Japanese.Views.Phrases.PhrasesPage
如果要使其像分部类一样工作,则需要将它们放在单个命名空间中:
// 1
namespace Japanese.Views.Phrases
{
public partial class PhrasesPage : ContentPage
{
PhrasesFrame phrasesFrame = new PhrasesFrame();
// 2
namespace Japanese.Views.Phrases
{
public partial class PhrasesPage
{
public void setTimeInterval()
{
phrasesFrame // CAN access
但是,请对这些类的责任进行一些分析。既然您将它们放在不同的名称空间中,并从不同的类继承,那么它们可能有不同的含义,并且需要设计为独立的类 您总是可以通过组合或聚合使类相互关联,而不是使其成为局部的。分部类不是很方便,通常用于代码生成场景
对我来说,
setTimeInterval
听起来似乎与“短语”和“页面”无关。您可以轻松访问其中所有分部类的成员,即使是私有的
public partial class Test
{
private int x = 5;
}
public partial class Test
{
public void Run()
{
Console.WriteLine(x); // outputs 5
}
}
但是,您没有正确地使用它。由于类位于两个不同的名称空间中,编译器将它们视为两个不同的类:
Japanese.PhrasesPage
Japanese.Views.Phrases.PhrasesPage
如果要使其像分部类一样工作,则需要将它们放在单个命名空间中:
// 1
namespace Japanese.Views.Phrases
{
public partial class PhrasesPage : ContentPage
{
PhrasesFrame phrasesFrame = new PhrasesFrame();
// 2
namespace Japanese.Views.Phrases
{
public partial class PhrasesPage
{
public void setTimeInterval()
{
phrasesFrame // CAN access
但是,请对这些类的责任进行一些分析。既然您将它们放在不同的名称空间中,并从不同的类继承,那么它们可能有不同的含义,并且需要设计为独立的类 您总是可以通过组合或聚合使类相互关联,而不是使其成为局部的。分部类不是很方便,通常用于代码生成场景
对我来说,
setTimeInterval
听起来似乎与“短语”和“页面”无关。由于名称空间不同,它们被视为两个不同的类。您应该为它们使用一个公共名称空间,如下所示:
namespace Japanese
{
public partial class PhrasesPage : ContentPage
{
PhrasesFrame phrasesFrame = new PhrasesFrame();
//...
}
}
namespace Japanese
{
public partial class PhrasesPage
{
public void setTimeInterval()
{
phrasesFrame // accessible! :)
}
}
}
由于名称空间不同,它们被视为两个不同的类。您应该为它们使用一个公共名称空间,如下所示:
namespace Japanese
{
public partial class PhrasesPage : ContentPage
{
PhrasesFrame phrasesFrame = new PhrasesFrame();
//...
}
}
namespace Japanese
{
public partial class PhrasesPage
{
public void setTimeInterval()
{
phrasesFrame // accessible! :)
}
}
}
你在问为什么两个不相关的类(
Japanese.PhrasesPage
和Japanese.Views.Phrases.PhrasesPage
)不能访问彼此的私有字段?这两个PhrasesPage
都存在于不同的名称空间中,因此它们不能在一个类中编译。你在问为什么两个不相关的类(日语.PhrasesPage
和日语.Views.Phrases.PhrasesPage
)无法访问彼此的私有字段?两个PhrasesPage
都存在于不同的名称空间中,因此无法在单个类中编译。非常感谢您的回答。我现在就接受。非常感谢您的回答。我现在就接受。