我今天接受了采访.我有一个来自OOP的问题,关于Encapsulation&Abstraction之间的区别?
我回答她的知识,Encapsulation基本上是将数据成员和成员函数绑定到一个名为Class的单元中.而抽象基本上是为了隐藏实现的复杂性并提供对用户的轻松访问.我觉得她的回答会很好.但她问道,如果两者的目的都是隐藏信息,那么这两者之间的实际区别是什么?我不能给她任何答案.
在提出这个问题之前,我在StackOverFlow上阅读了关于这两个OOP概念之间差异的其他线程.但我并没有发现自己有能力说服采访者.
任何人都可以用最简单的例子来证明它的合理性吗?
假设我们有两个方法M1(),并M2()在接口.抽象类也有两个相同的抽象方法.如果任何类实现了此接口或从抽象类继承,则必须同时实现其中的方法.
所以对我来说,似乎我的场景中的接口或抽象类的行为相同.那么,任何人都可以在这个特定的情况下突出显示这两者之间的区别,并建议是否在这里使用抽象类或接口?
我知道这些类之间的基本区别是我们在备份属性时使用PropertyMetadata,当我们想要支持动画时使用UIPropertyMetadata,以及在用户控件中使用FrameworkMetadata for Framework属性.
但我只理解理论部分.如果你能解释一个最简单的例子,它将在3个不同的依赖属性中使用所有这3个类,清楚地区分它们,这将是一个很好的例子.
提前致谢.
我已经开始学习-Windows OS上的机器学习课程。每当我启动Spyder 3.2.4(Python 3.6)和RStudio(1.1.383)的新实例时,每次需要在这些IDE中设置当前工作目录时。有什么方法可以永久设置它们吗?
我在理解RelativeSource绑定行为方面遇到了一些问题.下面是将Label内容StackPanel正确绑定到Tag的代码:
<Window x:Class="Binding_RelativeSource.MainWindow" Tag="Window Tag">
<Grid Tag="Grid Tag">
<StackPanel Tag="StackPanel Tag" Height="100" HorizontalAlignment="Left" Margin="156,97,0,0" Name="stackPanel1" VerticalAlignment="Top" Width="200">
<Label Content="{Binding Path=Tag,RelativeSource={RelativeSource Mode=FindAncestor,AncestorLevel=1,AncestorType=StackPanel},FallbackValue=BindingFailed}" Height="28" Name="label1" />
</StackPanel>
</Grid>
</Window>
Run Code Online (Sandbox Code Playgroud)
上面的代码不绑定GridTag,如果我改变AncestorType=Grid和AncestorLevel=2.我有两个问题:
我想我应该将AncestorLevel改为2,绑定到Grid.但它起作用了AncestorLevel=1.为什么?
我也无法将标签绑定到Window标签.请提示.
我使用下面的代码搜索具有特定扩展名的目录(及其子目录)中的文件:
Directory.EnumerateFiles(dir, Path.GetFileNameWithoutExtension(item) + ".ext1" , SearchOption.AllDirectories);
Run Code Online (Sandbox Code Playgroud)
现在,我可以使用不同的扩展名文件,如".ext1",".ext2",".ext3".我想在我的搜索模式中结合这些扩展,如下所示:
Directory.EnumerateFiles(dir, Path.GetFileNameWithoutExtension(item) + ".ext1||.ext2" , SearchOption.AllDirectories);
Run Code Online (Sandbox Code Playgroud)
建议好吗?
我知道如果控件的属性是用户可编辑的,那么它将支持双向绑定模式.例如,TextBox.Text属性也可以获取和设置.
所以,我的问题是[以编程方式/设计器属性窗口查看]如何获得控件属性的默认模式.即对于TextBox.Text,默认绑定模式本身就是双向的,而不是单向,单向源或一次.
我希望,我很清楚我的问题.如果不清楚,请问我.
我创建了一个MVVM示例应用程序.我的解决方案结构就像我有4个文件夹.Model为1st,View为2nd,ViewModel为3rd,HelperClasses为4th.目前我在View文件夹中只有一个视图.我想在App.xaml文件的StartupUri中设置我的视图[说FamilyView,显示在View文件夹中],默认情况下设置为MainWindow.xaml.
我不想在App.Xaml.cs中设置启动.
请建议怎么做?
另外,如果有多个视图,请您建议如何仅在App.Xaml文件中更改视图.